具有叠加可绘制的视图选择器

时间:2018-05-02 23:51:11

标签: android android-layout

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

这是我试图用作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>

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

我需要帮助才能了解如何在按下此按钮时显示绿色形状和“检查”标记?

谢谢,

1 个答案:

答案 0 :(得分:0)

试试这个

<?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>