选择器drawables

时间:2014-02-12 13:37:37

标签: android android-drawable android-selector

我有一个应用于ListView的Android风格和选择器的以下定义,但是当我点击它时,我看不到应用灰色渐变的效果。点击它会立即显示蓝色渐变。

这个例子的作者写道:

  

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

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

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

  

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 - &gt;蓝色渐变

<?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>
  

styles.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>

1 个答案:

答案 0 :(得分:0)

尝试添加一句话:

    <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"/>