【问题标题】:Android background that ripples when pressed, but solid color when selected?按下时会产生涟漪的Android背景,但选择时会出现纯色?
【发布时间】:2015-05-09 06:11:08
【问题描述】:

我正在尝试创建一个在按下时会产生涟漪的可绘制对象,但是当调用 view.setSelected(true) 时,它会为背景保留一个纯色。

以下文件放在我的drawable-v21文件夹中:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true">
        <color android:color="@color/green_primary" />
    </item>

    <item android:state_pressed="true">
        <ripple android:color="@color/green_primary">
            <item android:id="@android:id/mask">
                <shape android:shape="rectangle">
                    <solid android:color="@color/green_selected" />
                </shape>
            </item>
        </ripple>
    </item>
</selector>

我已经尝试过上述方法,它在被选中时具有纯色背景,但没有涟漪效果,而只是一种淡入效果。如果我只有没有选择器的波纹,按下时它会正确波纹,但显然我没有selected 状态。我怎么能把两者都烘焙到一个单独的背景可绘制对象中?

【问题讨论】:

    标签: android android-drawable


    【解决方案1】:

    你需要做的是:

    1。在drawable-v21文件夹中创建一个ripple_effect.xml文件

    <ripple xmlns:android="http://schemas.android.com/apk/res/android"
            android:color="@color/green_primary">
        <item android:drawable="@drawable/green_primary"/>
    </ripple>
    

    2。在drawable文件夹中创建button_selector.xml文件来设置选中状态颜色。

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_selected="true"
                android:drawable="@color/green_selected"/>
        <item android:drawable="@drawable/ripple_effect"/>
    </selector>
    

    【讨论】:

    • 嗨@MihirShah:我认为您应该创建一个具有圆角的自定义形状drawable,并将其设置在&lt;item android:drawable="@drawable/green_primary"/&gt;
    猜你喜欢
    • 2016-11-14
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 2015-01-10
    • 2014-04-08
    相关资源
    最近更新 更多