0

我遇到了 android ListView 和选择颜色的问题。所以我在 Spinner 下有一个 ListView,对于这个 ListView,我制作了一个 ArrayAdapter,它根据项目设置背景颜色。(这在屏幕截图中没有看到)

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

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

并添加到列表视图中:

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

我添加了 drawSelectorOnTop 因为没有它,选择颜色是不可见的。

现在的问题是在 android 4 它看起来像这样: 点击这里

在 android 2.3.3 上是这样的: 点击这里

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

编辑: 感谢巴西姆。这解决了它看起来因android版本而异的问题。但是,如果我在列表视图中有 drawSelectorOnTop 条目,文本仍然不可见,或者如果我没有此条目,则选择不可见。

4

1 回答 1

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>
于 2013-05-30T11:54:10.793 回答