Изменение разделителя с setDivider в ListActivity без специального ListView? - PullRequest
14 голосов
/ 29 октября 2010

Кажется, я не могу получить настроенный разделитель, используя определенный Drawable, который будет работать при использовании ListActivity, а не при создании пользовательского ListView.Похоже, что когда виртуальная машина создает свой собственный ListView для меня, с ListActivity, она использует тему с предоставленным разделителем по умолчанию;и если я попытаюсь предоставить его, в ListView вообще не появятся разделители.

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

Вот код, который я сейчас использую:

public class Categories extends ListActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final String[] OPTIONS = {
            "Hello",
            "Goodbye",
            "Good Morning",
            "Greetings",
            "Toodaloo"
        };

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            this, android.R.layout.simple_list_item_1, OPTIONS);
        setListAdapter(adapter);

        ListView lv = getListView();
        PaintDrawable sage = new PaintDrawable(R.drawable.sage);
        lv.setDivider(sage);
        lv.setDividerHeight(1);
    }
}

Ответы [ 3 ]

37 голосов
/ 30 октября 2010

Я понял это.Проблема не имела ничего общего с ListActivity, генерирующим для меня ListView.Это было в том, как я определял разделитель в коде Java.

Я вижу два способа определения разделителя (границы между строками ListView) в ListView, который автоматически раздувается из ListActivity, если вы хотитечтобы определить цвет в XML:

Метод 1:

В файле res / values ​​/ colors.xml укажите следующее:

<resources>
 <color name="sage">#cceebb</color>
</resources>

В своем классе, расширяющем ListActivity., сделайте это:

ListView lv = getListView();
ColorDrawable sage = new ColorDrawable(this.getResources().getColor(R.color.sage));
lv.setDivider(sage);
lv.setDividerHeight(1);

Метод 2:

В res / values ​​/ colors.xml:

<resources>
 <drawable name="sage">#cceebb</drawable>
</resources>

И в вашем классе, который расширяет ListActivity:

ListView lv = getListView();
ColorDrawable sage = new ColorDrawable(this.getResources().getColor(R.drawable.sage));
lv.setDivider(sage);
lv.setDividerHeight(1);
3 голосов
/ 25 марта 2015

Для установки делителя в просмотре списка программно :

Этот код вставлен в ваш .java Класс

   ListView lv = (ListView) findViewById(R.id.lv);
   lv.setDivider(getResources().getDrawable(R.drawable.drawable_divider));
   lv.setDividerHeight(1);

Создание Drawable : {res> drawable> drawable_divider.xml }

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"

    android:shape="rectangle">

    <solid android:color="#ececec"></solid>

</shape>
3 голосов
/ 12 марта 2014

Попробуйте этот код:

searchText.setBackgroundColor(getResources().getColor(R.color.wordColorBlack));
ListView lv = getListView();
lv.setDivider(getResources().getDrawable(R.drawable.divider2));
lv.setDividerHeight(2);
...