2010-06-17 1 views
2

мне нужно установить альтернативный цвет в список просмотра строк, но когда я делаю, что она удаляет/отключает на фокус по умолчанию желтый фонAndroid ListView с другим цветом и фокусом цвета

Я попытался с BackgroundColor rowView.setBackgroundColor (НЕКОТОРЫЙ ЦВЕТ);

также с флагом.

rowView.setBackgroundColor(R.drawable.view_odd_row_bg); 
<?xml version="1.0" encoding="utf-8"?> 
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_window_focused="false" 
     android:drawable="@color/odd" /> 

    <!-- 
     Even though these two point to the same resource, have two states 
     so the drawable will invalidate itself when coming out of pressed 
     state. 
    --> 
    <item 
     android:state_focused="true" 
     android:state_enabled="false" 
     android:state_pressed="true" 
     android:drawable="@color/highlight" /> 
    <item 
     android:state_focused="true" 
     android:state_enabled="false" 
     android:drawable="@color/highlight" /> 

    <item 
     android:state_focused="true" 
     android:state_pressed="true" 
     android:drawable="@color/highlight" /> 
    <item 
     android:state_focused="false" 
     android:state_pressed="true" 
     android:drawable="@color/highlight" /> 

    <item 
     android:state_focused="true" 
     android:drawable="@color/highlight" /> 

</selector> 

но это не будет работать.

Есть ли способ установить цвет фона и цвет фокусировки одновременно, который будет работать.

ответ

7

Я нашел этот учебник очень полезным для меня.

http://ykyuen.wordpress.com/2010/03/15/android-%E2%80%93-applying-alternate-row-color-in-listview-with-simpleadapter/

Я был в состоянии сделать ListView пунктов чередуя цвет плюса целенаправленного элемент хранятся по умолчанию выделен цвету.

+1

Как я могу это сделать с помощью bindView? Я пробовал что-то вроде этого: int i = 0; view.setBackgroundResource (i% 2 == 0? R.drawable.bindview_bg_gray: R.drawable.bindview_bg_white); i ++; , но после нескольких свитков он становится все беспорядочным! –

+4

Чрезвычайно поздний комментарий, но для потомков: Philipz полагается на последовательный вызов bindView, которого вы просто не должны делать. Никогда не предполагайте ничего о порядке вызовов bindView. Вместо этого попробуйте выполнить операцию modulo на cursor.getPosition() (курсор является одним из параметров метода bindView). – benvd

2

Положите прозрачность в свой цвет, желтая подсветка все еще существует, она находится только за вашим цветом фона, прозрачность позволит ей проявиться.