2016-03-29 22 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); 
相關問題