更改按钮背景颜色并在用户按下时保持图标(图像)

时间:2017-05-21 19:05:35

标签: android android-layout background-color android-xml android-button

我有20个带有不同图标(图像)的按钮当我点击(按)并保留背景图标(图像)时我需要更改按钮的背景颜色

我需要一些不需要为每个按钮设置选择器的东西,因为所有按钮应该具有相同的背景颜色(正常和选定),只有不同的图标

我发现了这个概念,但使用它需要为每个按钮设置选择器

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

    <item android:state_pressed="true">
        <layer-list>
            <item>
                <bitmap android:gravity="center" android:src="@drawable/bm_btn_background" android:tileMode="repeat" />
            </item>
            <item>
                <shape>
                     <gradient android:angle="270" android:endColor="#a0e0b071" android:startColor="#a0a67637" />
                     <stroke android:width="1dp" android:color="#5c3708" />
                     <corners android:radius="5dp" />
                     <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
                </shape>
            </item>
        </layer-list>
    </item>

    <item android:state_enabled="true">
        <layer-list>
            <item>
                <bitmap android:gravity="center" android:src="@drawable/bm_btn_background" android:tileMode="repeat" />
            </item>
            <item>
                <shape android:shape="rectangle">
                    <gradient android:angle="270" android:endColor="#a0a67637" android:startColor="#a0e0b071" />
                    <stroke android:width="1dp" android:color="#5c3708" />
                    <corners android:radius="5dp" />
                    <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
                </shape>
            </item>
        </layer-list>
    </item>


</selector>

1 个答案:

答案 0 :(得分:0)

将按钮的色调颜色(XML中的android:backgroundTint属性)设置为其未选择的颜色。

然后在按钮的onClick方法中执行此操作以将按钮的色调颜色更改为其选定状态:

//将按钮的背景色调颜色设置为其选定的状态颜色           button.setBackgroundTintList(ContextCompat.getColorStateList(this,selectedIntColour));