我已经遇到过去这个问题,我上次修复它的方式是为每个按钮创建一个新的.png文件(即使它们是相同的) 。不过,我正在寻找更多专业,高效的解决方案。更改不透明度的一个按钮改变他们所有人
基本上,我在我的应用程序中有7个按钮。他们都使用background.png作为背景。我的部分代码告诉应用程序'锁定'某些按钮,直到它们被解锁。但是,当我去设置一个按钮的alpha值时,它们都会受到影响。除了创建background.png的6个副本并重命名它们之外,是否有更简单的解决方案?
我的代码是非常标准:
在我的XML布局文件:这是对我的按钮引用
<Button android:id="@+id/button6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button"
android:layout_margin="2dp"
android:layout_weight="1"
android:text="BUTTON TEXT"
android:textSize="20dp"
android:textColor="#FFFFFF"
android:shadowColor="#000000"
android:shadowRadius="2"
android:shadowDx="2"
android:shadowDy="2"/>
我定制BUTTOM XML文件:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_enabled="false"
android:drawable="@drawable/button_unpressed" />
<item
android:state_pressed="true"
android:state_enabled="true"
android:drawable="@drawable/button_depressed" />
<item
android:state_focused="true"
android:state_enabled="true"
android:drawable="@drawable/button_unpressed" />
<item
android:state_enabled="true"
android:drawable="@drawable/button_unpressed" />
</selector>
最后我用来改变我的按钮的代码:
button.setEnabled(false);
button.setText("BUTTON TEXT");
button.getBackground().setAlpha(122);
不要改变背景的透明度。更改视图的Alpha(按钮)。 – Wukash
button.getBackground()。mutate()。setAlpha(122); –