Android Listview选择颜色与自定义背景

时间:2013-05-30 11:38:55

标签: android listview background selection

我遇到了Android ListView和选择颜色的问题。所以我在Spinner下有一个ListView,对于这个ListView,我做了一个ArrayAdapter,它根据项目设置backgroundcolor。 (截图中没有显示)

现在当我点击一个项目时,没有可见的选择颜色。为此,我做了一个像这样的选择器:

<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

那么如何设置两个版本看起来相同的选择颜色。并且最好使文本仍然可见。

修改 感谢Basim。这解决了它看起来不同的问题,取决于Android版本。但是如果我在列表视图中有drawSelectorOnTop条目,则文本仍然不可见,或者如果我没有此条目,则选择不可见。

1 个答案:

答案 0 :(得分: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>