Изменение разделителя с setDivider в ListActivity без пользовательского ListView?
Кажется, я не могу настроить настраиваемый разделитель, используя Drawable, который я определил, для работы при использовании ListActivity
, а не для создания пользовательского ListView
. Похоже, что когда VM создает для меня свой 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);
}
}
Ответы
Ответ 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);
Ответ 2
Попробуйте этот код:
searchText.setBackgroundColor(getResources().getColor(R.color.wordColorBlack));
ListView lv = getListView();
lv.setDivider(getResources().getDrawable(R.drawable.divider2));
lv.setDividerHeight(2);
Ответ 3
Чтобы установить разделитель в виде списка программно:
Этот код помещается внутри вашего .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>