Android List Посмотреть, как изменить фон выбранного элемента
Я попрошу о помощи по следующей проблеме. Очень странно для меня:) Я пытаюсь изменить фон выбранного элемента в ListView. Я установил пункт выбран следующим образом.
drawer_home.setItemChecked(0, true);
Я знаю, что могу установить цвет фона другого элемента. У меня нет проблем, чтобы изменить весь фон или активный элемент, например, но не на выбранный.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_selected="true" android:drawable="@android:color/holo_blue_light"/>
<item android:state_checked="true" android:drawable="@android:color/holo_red_dark"/>
<item android:state_pressed="true" android:drawable="@android:color/holo_green_dark"/>
<item android:drawable="@android:color/white"/>
</selector>
android:background="@android:color/white"
android:listSelector="@drawable/listview_selector"
То, что я пытался изменить, это стили на тему, и результат тот же. Все в порядке, кроме выбранного пункта:(
2 ответа
Я нашел решение своей проблемы. Я трачу очень много времени, чтобы решить что-то такое простое.
Сначала посмотрите что-то так просто.
Так что я поделюсь своим опытом, надеюсь, сэкономить TimF другого человека:) Вы можете просто использовать.
drawer_home.getChildAt(0).setBackgroundColor(Color.RED);
или же
drawer_home.getChildAt(drawer_home.getSelectedItemPosition()).setBackgroundColor(Color.RED);
Но только если элемент в ListView является статическим.
И до того, как я встретил это решение, но потому что динамически изменять элементы ListView с ArrayAdapter.
drawer_home.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_activated_1, home_menu_title));
Это дает мне ошибку. Потому что очевидно, что контент еще не загружен. Тогда используйте следующее.
drawer_home.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft,
int oldTop, int oldRight, int oldBottom) {
// TODO Auto-generated method stub
if(menuType == MENU_TYPE_HOME && currentPosition == 0) {
drawer_home.getChildAt(0).setBackgroundColor(0xCC4d4dff);
}
}
});
У меня нет большого опыта работы с Android, так что, вероятно, это не идеальное решение.
Я буду рад лучшему решению.
Попробуйте добавить
<item android:state_activated="true" android:drawable="@android:color/holo_blue_light"/>