Разделитель прокладок, игнорируя его

У меня проблема с этим разделителем:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <padding android:left="10dip" android:right="10dip"/>
    <solid android:color="@color/listSeparator"/>
    <size android:height="1px" />
</shape>

Я пытаюсь сделать небольшой отступ / отступ слева / справа от компонента listview (используя родственника, а не ListView Object) . Затем, когда я пытаюсь выразить это так...

getListView().setDivider(getResources().getDrawable(R.drawable.song_separator));

... это напрямую игнорируется, помещая полный разделитель макета.

Теперь я не знаю, в чем проблема, но я знаю, что:

  • Я не могу поставить поле во всех ListView, потому что я хочу listHeader fill_parent
  • Я пытался поставить фальшивую границу, но это не очень приятно, когда я меняю цвет фона, оставляя разделитель.

Любая идея?

ОБНОВЛЕНО

Мое последнее частичное решение - поместить ImageView, выровненный рядом с родительским дном. Это частичная причина, потому что это ставит на дно, но не на оригинальный разделитель.

Если кто-то может сказать мне, как поместить это изображение в точную линию делителя, я бы тоже дал ему +50.

2 ответа

Quiroga, поэтому моей первой ставкой было бы сделать код более отлаживаемым, разделив вызов метода на отдельные строки.

ListView lview = getListView();
if (lview != null){
  Resources res = getResources();
  if (res != null) {
       Drawable dable = res.getDrawable(R.drawable.song_separator);
       if (dable != null){
           lview.setDivider(dable)
       }
  }
} else {
   //Log in some way that you have a problem.
}

Я знаю, что это выглядит несколько сложнее, но таким образом вы можете убедиться, что Drawable найден и является правильным, а затем правильно назначен для ListView.

Другая вещь, которую вы можете попробовать, это просто назначить другой, может быть, специфичный для платформы разделитель и посмотреть, работает ли он правильно.

Также попробуйте получить в свои руки исходный код Android, он снова в сети, если вы добавите его в свой Java-проект, который можно отлаживать в классах Platform и глубоко в коде платформы.

Так что на самом деле это не решение вашей проблемы, но, возможно, оно поможет вам найти решение.

Поместите заголовок в отдельный файл и получите к нему доступ:

открытый класс AuditActivity расширяет ListActivity {

Budget budget;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.audit);
    ListView lv = getListView();
    LayoutInflater infalter = getLayoutInflater();
    ViewGroup header = (ViewGroup) infalter.inflate(R.layout.header, lv, false);
    lv.addHeaderView(header);
    budget = new Budget(this);
    /*
    try {
        test = budget.getTransactions();
        showEvents(test);
    } finally {

    }
    */

// switchTabSpecial (); }

Перейдите по этой ссылке....... там есть подробная информация, используйте RelativeLayout вместо Linear One, надеюсь, это вам поможет. Android: добавление статического заголовка в верхнюю часть ListActivity

Другие вопросы по тегам