我在自定义视图中实现选择器时遇到问题。我已经搜索了最近1小时,但我找不到解决方案。我有自定义视图与imageview,一些textviews和九个补丁背景,但问题是当它处于按下状态时,选择器的颜色不覆盖图像视图。
对于实现,我正在使用背景选择器进行布局,我只是在按下和未按下状态下更改9补丁图像,然后在列表视图中禁用默认选择器。
你有更好的解决方案吗?我在google play中看到,蓝色选择器覆盖了所有视图,这就是我想要的。
对于xml,
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/touch_selector"
android:orientation="horizontal"
android:padding="16dp" >
<ImageView />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView />
<TextView />
</LinearLayout>
</LinearLayout>
对于触控选择器
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/card_background_pressed" android:state_focused="true"/>
<item android:drawable="@drawable/card_background_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/card_background_white" android:state_focused="false" android:state_pressed="false"/>
</selector>
其中card_background是9补丁图片。
编辑:
这是谷歌播放的例子,
答案 0 :(得分:2)
接受的不正确。 可以在选择器中使用九路径,只需使用&lt; nine-patch&gt;。像这样:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true">
<nine-patch
android:src="@drawable/marker"/>
</item>
<item>
<shape>
<solid android:color="#000000" />
</shape>
</item>
</selector>
答案 1 :(得分:1)
我得到了答案。它真的很简单,尽管有9个补丁图像是不可能的.. 这篇文章中明确描述了http://arpitonline.com/blog/2013/05/11/android-implementing-touch-feedback-on-views/
然后,我只需要配置我的listview,用选择器列出项目背景。完成。