2014-06-24 2 views
0

в моем списке, когда пользователь долго нажимает на элемент, я рисую пользовательскую панель действий и предоставляю пользователю возможность удалять сразу несколько элементов одновременно.listview selection color in android

по умолчанию, если я выполняю длительное нажатие, я получу цвет выбора как синий, и он исчезнет.

Чтобы преодолеть это, я попытался добавить такой селектор.

listviewselector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <!-- Selected --> 
    <item 
    android:state_focused="true" 
    android:state_selected="false" 
    android:drawable="@color/RED"/> 

    <!-- Pressed --> 
    <item 
    android:state_selected="true" 
    android:state_focused="false" 
    android:drawable="@color/BLUE" /> 

</selector> 

Если я установить этот селектор, когда пользователь выполняет длительное нажатие я могу видеть красный цвет, но после палат, если пользователь выполняет выбор, цвет не становится удерживается на предмет. По умолчанию он выглядит белым.

Я попытался установить цвет фона на основе состояния, как показано ниже

if(mSelectedItemsIds.get(key)) 
     { 
      convertView.setBackgroundColor(REDCOLOR); 
     } 
     else 
     { 
      convertView.setBackgroundColor(WHITE); 
     } 

В этом случае, если пользователь выполняет длительное нажатие, а затем, если пользователь выбрать несколько элементов, я мог видеть красный цвет и по умолчанию всех цветов элементов будут быть белым. Но если пользователь прикасается к любому элементу, цвет по умолчанию будет ничем. Если цвет не будет выбран при выборе.

Как получить белый цвет по умолчанию, на красном синем цвете и при красном цвете красного цвета?

я попытался как этот Нового селектор:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <!-- Selected --> 
    <item 
    android:state_focused="true" 
    android:state_selected="false" 
    android:drawable="@color/RED"/> 

    <!-- Pressed --> 
    <item 
    android:state_selected="true" 
    android:state_focused="false" 
    android:drawable="@color/WHITE" /> 

</selector> 



if(mSelectedItemsIds.get(key)) 
      { 
       convertView.setBackgroundColor(mContext.getResources().getColor(R.color.RED)); 
      } 
      else 
      { 
       convertView.setBackgroundColor(R.drawable.listviewselector); 
      } 

В этом я получаю по умолчанию все товару голубого цвета. Зачем?

+0

попробуйте установить listselector в файл XML завышены по convertView –

+0

любой образец кода, пожалуйста .. спасибо – Naruto

+0

listviewselector.xml, что Вы отправили это образец, кстати я тоже блондина веером –

ответ

1

Я пробовал вот так, это сработало.

if(mSelectedItemsIds.get(key)) 
     { 
      convertView.setBackgroundColor(mContext.getResources().getColor(R.color.BLUE)); 
     } 
     else 
     { 
      convertView.setBackgroundColor(android.R.drawable.list_selector_background); 
     } 
+1

Я тоже пытался, кажется, мне не нужно это делать. Ну, я твой jiriya lol –

+0

Хмм, +1 за ур комментарий :) – Naruto