1

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

在此处输入图像描述

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

编辑 :

这是来自谷歌播放的例子,

谷歌播放

4

1 回答 1

2

接受是不正确的。可以在选择器中使用九路径,您只需要使用 <nine-patch>。像这样的东西:

<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>
于 2014-06-27T15:28:12.010 回答