2016-03-29 23 views
0

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

不要改变背景的透明度。更改视图的Alpha(按钮)。 – Wukash

+0

button.getBackground()。mutate()。setAlpha(122); –

回答

0

更换

button.getBackground().setAlpha(122);

button.setAlpha(122);

+0

我也试过这个,也无济于事。同样的结果。 –

0

哎呦:在我的自定义按钮XML所有我所要做的就是创建禁用按钮的新巴纽(有点暗)。在此之后,我删除了代码以完全更改alpha值,现在一切都很好!当我以编程方式禁用按钮时,颜色将更改为我的XML文件中指定的.png文件。

0

分配背景codefor每个按钮:

Drawable drawable=getResources().getDrawable(R.drawable.button); 
    b5.setBackground(drawable); 
    drawable=getResources().getDrawable(R.drawable.button); 
    b6.setBackground(drawable); 
相关问题