如何在ListView的按下状态下使用带渐变的drawable?

时间:2011-12-13 15:55:12

标签: android android-listview gradient

我目前正在为所有按钮使用drawable,当你按下按钮时,它会在它上面呈现渐变。我通过使用各种按下状态和layer-list来实现这种效果。

现在我正在尝试使用ListView创建相同的效果。当我单击它时,我能够将不同的图片显示为列表中对象的背景,但每当我尝试添加具有单独渐变的图片时,它会在单击{中的对象时显示默认的Android颜色{1}}。但是,它确实在此默认颜色上显示我的自定义渐变。

我知道这听起来有点模糊,所以我拍了一些截图来显示效果:

带渐变叠加的按钮,工作正常

enter image description here

具有每个对象背景的ListView在使用该图像加上渐变叠加时不起作用

enter image description here

我使用的drawable作为ListView

的背景图片

enter image description here

梯度处理按钮的原因是什么,而ListView上没有?就像我说的那样,对于按下状态使用完全不同的图像可以正常工作,但使用背景图像加上渐变不会。

用于ListView按下状态的代码

ListView

list_gradient.xml                                

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

    <!-- Active tab -->
    <item android:drawable="@drawable/list_gradient" android:state_focused="false" android:state_pressed="false" android:state_selected="true"/>
    <!-- Inactive tab -->
    <item android:drawable="@drawable/button_listpage_77px" android:state_focused="false" android:state_pressed="false" android:state_selected="false"/>
    <!-- Pressed tab -->
    <item android:drawable="@drawable/list_gradient" android:state_pressed="true"/>
    <item android:drawable="@drawable/button_listpage_77px" />

</selector>

今天摆弄了几个小时后,我仍然无法解决问题。我知道我错过了什么,但我似乎无法弄清楚是什么。有没有人有想法?

1 个答案:

答案 0 :(得分:2)

在重新审视完所有内容后,再次在SO上阅读所有类似的问题后,我注意到我的文件中没有使用'android:listSelector`。

ListView

中设置以下内容后

android:listSelector="#00000000",我的ListView表现得像我想的那样!

我认为ListView与所有按钮的工作方式相同,但我错了。从我的错误中学习,它可能会为你节省很多时间。