2016-05-19 18 views
1

を削除せずに、私はボタンがあります。アンドロイド:setBackgroundColor私の描画可能

<Button 
    android:layout_width="60dp" 
    android:layout_height="wrap_content" 
    android:text="@string/male" 
    android:id="@+id/btn_mgen_m" 
    android:layout_gravity="center_horizontal" 
    android:background="@drawable/bg_tgl_btn_left" 
    android:textColor="#444444" /> 

を、私はこのようにその色を変更:

btnMgenM = (Button) findViewById(R.id.btn_mgen_m); 
btnMgenM.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     btnMgenM.setBackgroundColor(Color.parseColor("#dca8c3")); 
    } 
}); 

を背景色が正しく変更されますが、背景を削除するように思われますドロアブル丸い半径、テキストの色と境界線が削除されます 単純な色のボタンだけが残っています。 このボタンをクリックしたときに背景色を変更したいが、他のものは変更しない。

どうすればいいですか?

答えて

1

試してみてください。この両方のあなたは、次のように行うことができます

btnMgenM.setBackgroundResource(0); 
btnMgenM.setBackgroundColor(Color.parseColor("#dca8c3")); 
+0

私はこれを試しました。ボタンの形状(描画可能な背景)も削除されません。私は形状/境界線を維持しなければならないが、背景色を変更するだけだ。 – abend0

0

ラインで:

あなたres/drawablebutton_style.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:state_focused="true"> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/colorGreyFirst" /> 
     <corners android:radius="16dp" /> 
     <stroke 
      android:width="3dp" 
      android:color="@color/colorBlackTransparent" /> 
    </shape> 
</item> 

<item android:state_selected="true"> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/colorGreyFirst" /> 
     <corners android:radius="16dp" /> 
     <stroke 
      android:width="3dp" 
      android:color="@color/colorBlackTransparent" /> 
    </shape> 
</item> 

<item android:state_pressed="true"> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/colorGreyFirst" /> 
     <corners android:radius="16dp" /> 
    </shape> 
</item> 

<item> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/colorGrey" /> 
     <corners android:radius="16dp" /> 
     <stroke 
      android:width="3dp" 
      android:color="@color/colorGrey" /> 
    </shape> 
</item> 

にして、XMLで作成します。

<Button 
android:layout_width="60dp" 
android:layout_height="wrap_content" 
android:text="@string/male" 
android:id="@+id/btn_mgen_m" 
android:layout_gravity="center_horizontal" 
android:background="@drawable/button_style" 
android:textColor="#444444" /> 

color.xmlに色を指定できます。

それとも、単にそのように行うことができます。

btnMgenM = (Button) findViewById(R.id.btn_mgen_m); 
btnMgenM.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     btnMgenM.setBackgroundColor(getResources().getColor(R.color.yourColor)); 

    } 
}); 

そして、あなたのcolor.xmlに

<color name="yourColor"> #dca8c3</color> 

をこれを追加するには、それがお役に立てば幸いです。

+0

ニース!良い提案。一部のボタンはカラートグルでなければならず、一部のボタンは他のボタンの背景色を変更するため、プログラムで背景色を変更する必要があります。このstate_ [action]をプログラムによって変更できますか? – abend0

+0

私の提案はあなたのために機能しますか? –

+0

私はそれを見つけた!私が必要なのはsetPressed()、SetSelected()でした。ありがとう – abend0

関連する問題