首页 > 解决方案 > 具有覆盖可绘制对象的视图选择器

问题描述

我正在尝试创建一个按钮,它将显示为: - 按下时,它应该显示带有覆盖“复选”标记的较深的绿色阴影 - 否则,它应该显示为较浅的绿色阴影。

这是我试图用作 Button 对象背景的可绘制对象:

<item android:state_pressed="true" android:drawable="@drawable/ic_check_black_24dp">
    <shape android:shape="oval">
        <size android:width="16dp" android:height="16dp" />
        <corners android:radius="8dp" />
        <gradient
            android:type="radial"
            android:gradientRadius="60dp"
            android:startColor="#64DD17"
            android:endColor="@android:color/black" />
    </shape>
</item>

<item android:state_pressed="false">
    <shape android:shape="oval">
        <size android:width="16dp" android:height="16dp" />
        <corners android:radius="8dp" />
        <gradient
            android:type="radial"
            android:gradientRadius="60dp"
            android:startColor="#76FF03"
            android:endColor="@android:color/black" />
    </shape>
</item>

问题是当按下按钮时只显示“复选”标记而不是它后面的绿色形状。未选中时,按钮显示正确的绿色形状。

我需要帮助来了解如何在按下此按钮时显示绿色形状和“复选”标记?

谢谢,

标签: androidandroid-layout

解决方案


尝试这个

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

    <item android:drawable="@drawable/ic_launcher_background" android:state_pressed="true">
        <shape android:shape="oval">
            <size android:width="16dp" android:height="16dp" />
            <corners android:radius="8dp" />
            <gradient android:endColor="@android:color/black" android:gradientRadius="60dp" android:startColor="#64DD17" android:type="radial" />
        </shape>
    </item>


    <item>
        <shape android:shape="oval">
            <size android:width="16dp" android:height="16dp" />
            <corners android:radius="8dp" />
            <gradient android:endColor="@android:color/black" android:gradientRadius="60dp" android:startColor="#76FF03" android:type="radial" />
        </shape>

    </item>
</selector>

推荐阅读