2015-09-24 5 views
0

В настоящее время я пытаюсь применить селектор, когда виден список. Когда он завис, сфокусированный или нажатый, он должен стать серым. Поэтому я искал несколько сообщений здесь, в стеке, но все они, похоже, не работают.Пользовательский селектор ListView не работает

Мой селектор:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:state_enabled="true" 
     android:state_pressed="true" android:drawable="@drawable/hover" /> 
    <item android:state_enabled="true" 
     android:state_focused="true" android:drawable="@drawable/hover" /> 
    <item android:state_enabled="true" 
     android:state_selected="true" android:drawable="@drawable/hover" /> 
    <item 
     android:drawable="@drawable/normal" /> 
</selector> 

Мой ListView:

<ListView 
    android:id="@+id/supplier_scan_list" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" 
    android:divider="#eaeaea" 
    android:dividerHeight="0.5dp" 
    android:drawSelectorOnTop="true" 
    android:fastScrollEnabled="false" 
    android:footerDividersEnabled="false" 
    android:listSelector="@drawable/listselector" 
    android:overScrollFooter="@android:color/transparent"> 

Мой настраиваемое представление элемента списка:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@android:color/transparent"> 

<RelativeLayout 
    android:id="@+id/item" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:background="@android:color/transparent" 
    android:padding="10dp"> 

    <TextView 
     android:id="@+id/scan_title" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="15dp" 
     android:layout_toLeftOf="@+id/order_count" 
     android:background="@android:color/transparent" 
     android:text="$Artikelnaam" 
     android:textColor="#000" 
     android:textSize="20sp" /> 

    <TextView 
     android:id="@+id/scan_detail" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/scan_title" 
     android:layout_centerVertical="true" 
     android:layout_marginLeft="15dp" 
     android:background="@android:color/transparent" 
     android:text="$ArtikelDetail" 
     android:textColor="@android:color/secondary_text_light_nodisable" 
     android:textSize="12sp" /> 

    <Button 
     android:id="@+id/order_count" 
     android:layout_width="50dp" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_marginLeft="40dp" 
     android:layout_marginRight="40dp" 
     android:background="@drawable/rounded_square_recent" 
     android:clickable="false" 
     android:text="1" 
     android:textColor="#FFF" 
     android:textSize="18sp" /> 

</RelativeLayout> 

Кто-нибудь знает, что я делаю неправильно Вот?

+0

Вы пытались установить фон вашего list_item на селектор? – freddieptf

+0

Да, через xml и программно. –

+0

Что вы можете сделать с помощью мыши? Не было бы проще просто передать цвет серого в вашем селекторе? – freddieptf

ответ

0

Добавьте эти строки в ListView:

android:focusable="true" 
android:focusableInTouchMode="true" 
android:descendantFocusability="blocksDescendants" 

selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/normal" android:state_activated="false"/> 
<item android:drawable="@drawable/hover" android:state_pressed="true"/> 
<item android:drawable="@drawable/hover" android:state_activated="true"/> 
</selector> 
+0

Не жалко, тоже не работает. –

+0

отредактировал мой ответ, попробуйте – Aakash

+0

Ничего не работает. В этом вся проблема, все возможные способы не работают. –

0

Решение:

Это ListView используется пользовательский адаптер (BaseAdapter). В этом адаптере я сделал rootview onClick, но это отменило мой списокSelector. Поэтому я изменил его на onItemClick в ListView и сделал дополнительный метод для возврата информации, необходимой из моего адаптера. Делая это, listSelector снова работал.