我过去遇到过这个问题,上次修复它的方法只是为每个按钮创建一个新的.png文件(即使它们是相同的)。但是,我正在寻找更专业,更有效的解决方案。
基本上,我的应用程序中有7个按钮。所有这些都使用background.png作为背景。我的部分代码告诉应用程序锁定'某些按钮,直到它们被解锁。但是,当我设置一个按钮的alpha时,它们都会受到影响。除了创建6个重复的background.png并重命名它们之外,还有一个更简单的解决方案吗?
我的代码很标准:
在我的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"/>
我的按钮引用的自定义按钮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);
答案 0 :(得分:0)
替换
button.getBackground().setAlpha(122);
与
button.setAlpha(122);
答案 1 :(得分:0)
哎呀:在我的自定义按钮XML中,我所要做的就是创建一个新的.png按钮禁用(稍暗一点)。在此之后,我删除了代码以完全更改alpha值,现在一切都很好!当我以编程方式禁用按钮时,颜色会更改为我的XML文件中指定的.png文件。
答案 2 :(得分:0)
为每个按钮分配代码背景:
Drawable drawable=getResources().getDrawable(R.drawable.button);
b5.setBackground(drawable);
drawable=getResources().getDrawable(R.drawable.button);
b6.setBackground(drawable);