更改一个按钮的不透明度会改变所有这些

时间:2016-03-29 22:27:53

标签: java android xml

我过去遇到过这个问题,上次修复它的方法只是为每个按钮创建一个新的.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);

3 个答案:

答案 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);