自定义视图中的选择器与9补丁图像背景

时间:2013-06-15 02:56:51

标签: android android-listview selector android-selector

我在自定义视图中实现选择器时遇到问题。我已经搜索了最近1小时,但我找不到解决方案。我有自定义视图与imageview,一些textviews和九个补丁背景,但问题是当它处于按下状态时,选择器的颜色不覆盖图像视图。

enter image description here

对于实现,我正在使用背景选择器进行布局,我只是在按下和未按下状态下更改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补丁图片。

编辑:

这是谷歌播放的例子,

Google play

2 个答案:

答案 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,用选择器列出项目背景。完成。