Изменение разделителя с помощью setDivider в ListActivity без пользовательского ListView?
-
27-09-2019 - |
Вопрос
Кажется, я не могу заставить настроенный разделитель, используя определенный мной чертеж, работать при использовании 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);