0

我对 android 样式和选择器应用了以下定义ListView,但是当我单击它时,我看不到应用灰色渐变的效果。单击它会立即显示蓝色渐变。

正如这个例子的作者所写:

我们想把它应用到我们的列表选择器上。我们希望渐变在每次按下列表项时将其起始颜色从灰色更改为浅蓝色,而不是始终显示相同的渐变。因为我们现在有两个不同的列表选择器——一个用于默认状态,一个用于按下状态——我们需要将它们保存在单独的文件中。

有人可以解释它应该如何正确显示吗?或者我错过了什么?
更一般地说,我应该期望在显示屏上看到什么?列表项单击时从灰色渐变到蓝色渐变的流畅过渡?

更新:这就是作者“看到”它的方式,但是当我点击项目时,它看起来只在图片的右侧。我可以假设作者希望默认情况下列表中的所有项目都是灰色的吗?或者这种状态不适用于列表视图项?

list_item_default.xml -> 灰色渐变

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <gradient
        android:angle="0"
        android:endColor="#FFFF"
        android:startColor="#AFFF" />
    <stroke
        android:width="1dip"
        android:color="#CCC" />
    <corners android:radius="5px" />
</shape>

list_item_pressed.xml -> 蓝色渐变

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <gradient
        android:angle="0"
        android:endColor="#FFFF"
        android:startColor="#AA66CCFF" />
    <stroke
        android:width="1dip"
        android:color="#CCC" />
    <corners android:radius="5px" />
</shape>

list_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/list_item_default" android:state_pressed="false"/>
    <item android:drawable="@drawable/list_item_pressed" android:state_pressed="true"/>
</selector>

样式.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="MyMoviesTheme" parent="@android:style/Theme.Black">
    <item name="android:listViewStyle">@style/MyMoviesListView</item>
    <item name="android:windowBackground">@drawable/film_bg</item>
  </style>

  <style name="MyMoviesTextAppearance" parent="@android:style/TextAppearance">
    <!--<item name="android:textStyle">bold</item>-->
  </style>

  <style name="MyMoviesListView" parent="@android:Widget.ListView">
    <item name="android:background">@color/list_background</item>
    <item name="android:listSelector">@drawable/list_selector</item>
    <item name="android:cacheColorHint">@android:color/transparent</item>
    <item name="android:fastScrollEnabled">true</item>
    <item name="android:footerDividersEnabled">false</item>
  </style>

</resources>
4

1 回答 1

0

试试加一句:</p>

    <item 
    android:state_enabled="true" 
    android:drawable="@drawable/list_item_default"/>
    <item
    android:state_enabled="true"  
    android:drawable="@drawable/list_item_pressed" 
    android:state_pressed="true"/>
于 2014-02-12T13:45:22.670 回答