【问题标题】:changing button background color and keep icon (image) when user press on it当用户按下按钮时更改按钮背景颜色并保留图标(图像)
【发布时间】:2017-10-21 09:29:16
【问题描述】:

我有 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>

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-19
      • 2023-04-01
      • 1970-01-01
      • 2023-02-21
      • 1970-01-01
      • 1970-01-01
      • 2020-11-07
      • 2021-02-23
      相关资源
      最近更新 更多