我有一个列表,我已经使用自定义布局定义了自己的列表视图项。此布局具有自定义可绘制的背景。
我对ListView项目的自定义布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/item"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true" >
...
</RelativeLayout>
我的自定义绘图item.xml
:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- background: shadow -->
<item>
<shape
android:dither="true"
android:shape="rectangle" >
<corners android:radius="2dp" />
<solid android:color="@color/itemShadowColor" />
</shape>
</item>
<!-- foreground: surface -->
<item android:bottom="2dp">
<shape
android:dither="true"
android:shape="rectangle" >
<corners android:radius="2dp" />
<solid android:color="@color/itemBackgroundColor" />
</shape>
</item>
</layer-list>
现在这个项目不再可以点击了。
你能解释一下为什么,以及我需要做些什么才能拥有相同的行为(蓝色背景的选择器),如按钮点击?
答案 0 :(得分:2)
在selector
文件夹中定义pressed
及其default
和res/drawable
个州(其中一个州将是您的@drawable/item
)。将其设置为列表行布局的bg。
查看类似的问题和答案:Selector on background color of TextView
修改强>
理解和应用像谷歌这样的东西的最好方法是研究SDK并做类似的事情。例如,查看btn_default_holo_dark
drawable。它是一个带状态的选择器,是的它是一个xml。
这是一个取自sdk(sdk\platforms\android-18\data\res\drawable\btn_default_holo_dark.xml
)
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:state_enabled="true"
android:drawable="@drawable/btn_default_normal_holo_dark" />
<item android:state_window_focused="false" android:state_enabled="false"
android:drawable="@drawable/btn_default_disabled_holo_dark" />
<item android:state_pressed="true"
android:drawable="@drawable/btn_default_pressed_holo_dark" />
<item android:state_focused="true" android:state_enabled="true"
android:drawable="@drawable/btn_default_focused_holo_dark" />
<item android:state_enabled="true"
android:drawable="@drawable/btn_default_normal_holo_dark" />
<item android:state_focused="true"
android:drawable="@drawable/btn_default_disabled_focused_holo_dark" />
<item
android:drawable="@drawable/btn_default_disabled_holo_dark" />
</selector>
这些是从sdk(sdk\platforms\android-18\data\res\drawable-xhdpi
)拍摄的图像:
将此drawable / selector(@drawable/btn_default_holo_dark
)应用于任何视图时,您将拥有其状态。我希望这个样本能让我的答案更加清晰。