Изменение разделителя с помощью setDivider в ListActivity без пользовательского ListView?

StackOverflow https://stackoverflow.com/questions/4049069

Вопрос

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

Я знаю, что могу создать пользовательский ListView используя XML и определяя android: разделитель на этом ListView, и это распознает мой пользовательский разделитель, который можно нарисовать.Но я бы предпочел просто позволить 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);
    }
}
Это было полезно?

Решение

Я догадался об этом.Проблема не имела ничего общего с 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);

Другие советы

Установить делитель в ListView:

Этот код положить внутрь в вашем .Джава Сорт

   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>

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

searchText.setBackgroundColor(getResources().getColor(R.color.wordColorBlack));
ListView lv = getListView();
lv.setDivider(getResources().getDrawable(R.drawable.divider2));
lv.setDividerHeight(2);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top