2016-03-29 5 views
0

私は以前この問題に遭遇しました。最後に固定した方法は、すべてのボタンの新しい.pngファイルを作成することでした。 。しかし、私はもっとプロフェッショナルで効率的なソリューションを探しています。ボタンの不透明度を変更するとすべてが変更されます

基本的に私のアプリには7つのボタンがあります。それらのすべてはバックグラウンドとしてbackground.pngを使用します。私のコードの一部は、ロックが解除されるまで、特定のボタンを「ロック」するようにアプリケーションに指示します。しかし、ボタンのアルファ値を設定すると、すべてが影響を受けます。 background.pngの6つの複製を作成して名前を変更する以外の簡単な解決法はありますか?私のボタンのために参照されている

<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> 

私のXMLレイアウトファイル内

私のコードはかなり標準です最後にボタンを変更するコード:

button.setEnabled(false); 
button.setText("BUTTON TEXT"); 
button.getBackground().setAlpha(122); 
+1

背景のアルファを変更しないでください。ビューのアルファベットを変更します(ボタン)。 – Wukash

+0

ボタン.getBackground()。mutate()。setAlpha(122); –

答えて

0

button.setAlpha(122);

+0

私もこれを試してみましたが、無駄です。同じ結果。 –

0

おっとと

button.getBackground().setAlpha(122);

を交換してください:私のカスタムボタンのXML内には私がしなければならなかったすべては、無効ボタンの新しい.PNGを作成しました(少し暗い)。この後、私はアルファ値を完全に変更するコードを削除しましたが、今はすべて良いです!プログラムでボタンを無効にすると、色はXMLファイルで指定された.pngファイルに変わります。 codeforすべてのボタンで

0

アサイン背景:

Drawable drawable=getResources().getDrawable(R.drawable.button); 
    b5.setBackground(drawable); 
    drawable=getResources().getDrawable(R.drawable.button); 
    b6.setBackground(drawable); 
関連する問題