2016-05-19 6 views
1

Ich habe eine Schaltfläche:Android: setBackgroundColor, ohne entfernen meine ziehbar

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

und ich änderte seine Farbe wie folgt aus:

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

Die Hintergrundfarbe richtig geändert wird, aber es scheint, den Hintergrund zu entfernen zeichnbar. Der runde Radius, die Textfarbe und der Rand werden entfernt nur der einfache farbige Knopf ist geblieben. Ich möchte die Hintergrundfarbe ändern, wenn ich auf diese Schaltfläche klicke, aber nichts anderes ändere.

Wie kann ich das tun?

Antwort

1

Versuchen Sie, diese beiden Linien

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

Ich habe das versucht. aber die Form der Schaltfläche (Zeichenhintergrund) wird auch nicht entfernt. Ich muss Form/Grenze behalten aber die Hintergrundfarbe einfach ändern – abend0

0

Sie wie folgt tun:

erstellen in Ihrem 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> 

und in Ihrem 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" /> 

und in Ihrem color.xml können Sie Ihre Farben angeben.

Oder Sie können einfach so tun:

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

    } 
}); 

Und fügen Sie diese zu Ihrer color.xml

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

Hoffe, es hilft.

+0

Nett! guter Vorschlag. aber ich muss die Hintergrundfarbe programmatisch ändern, weil eine Schaltfläche farblich umgeschaltet werden sollte und eine Schaltfläche die Hintergrundfarbe anderer Schaltflächen ändert. Kann ich diesen Zustand [Aktion] programmgesteuert ändern? – abend0

+0

funktioniert mein Vorschlag für Sie? –

+0

Ich habe es gefunden! Was ich brauche, war setPressed(), SetSelected(). Vielen Dank – abend0