2013-05-30 3 views
0

У меня проблема с андроидом ListView и цветом выделения. Таким образом, у меня есть ListView под Spinner, и для этого ListView я создал ArrayAdapter, который устанавливает цвет фона в зависимости от элемента. (Этого не видно на снимках экрана)Android Listview цвет выбора с пользовательским фоном

Теперь, когда я нажимаю на один элемент, цвет выделения не отображается. Для этого я сделал селектор так:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@color/SelectionColor" android:state_pressed="true" android:state_focused="true"/> </selector> 

и добавляют к ListView:

android:listSelector="@drawable/item_selector" 
android:drawSelectorOnTop="true" 

Я добавил drawSelectorOnTop, потому что без этого выбора цвета не видно.

Сейчас проблема заключается в том, что в Android 4 это выглядит следующим образом: click here

и на Android 2.3.3, как это: click here

Так как я могу установить цвет выделения, что это выглядит для обеих версий. И желательно, чтобы текст все еще был видимым.

EDIT: Благодаря Basim. Это решает проблему, что она выглядит по-разному в зависимости от версии Android. Но текст по-прежнему не отображается, если у меня есть запись drawSelectorOnTop в списке или выбор не отображается, если у меня нет этой записи.

+0

Опубликуйте полный макет ListView, а при необходимости макет элемента списка. – tbm

+0

Если все еще актуально, просто используйте цвет с некоторой прозрачностью. Вместо использования #fefeff используйте # 4Cfefeff – nheimann1

ответ

6

Попробуйте этот селектор,

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<!-- Selector style for listrow --> 
<item 
android:state_selected="false" 
    android:state_pressed="false" 
    android:drawable="@drawable/normal_shape" /> 
<item android:state_pressed="true" 
    android:drawable="@drawable/gradient_bg_hover" /> 
<item android:state_selected="true" 
android:state_pressed="false" 
    android:drawable="@drawable/gradient_bg_hover" /> 
</selector> 

normal_shape.xml

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

    <gradient 
     android:angle="270" 
     android:endColor="#fefeff" 
     android:startColor="#d5dbe7" /> 

    <stroke 
     android:width="1dp" 
     android:color="#acd9dd" /> 

</shape> 

gradient_bg_hover.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <!-- Gradient BgColor for listrow Selected --> 
    <gradient 
     android:startColor="#d9dd00" 
     android:endColor="#e6ea02" 
     android:angle="270" /> 


</shape> 
+0

Спасибо, что решает первую половину проблемы! – Birdy

Смежные вопросы