更改按钮的背景颜色,并保持图标(图像)当用户按下它

问题描述:

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

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

然后,在按钮的onClick方法执行这对按钮的色调颜色改变为选中状态:

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