2016-12-27 2 views
0

Ich möchte die Farbe der Schaltfläche ändern, wenn vom Benutzer gedrückt wird. Ich muss rot/grün angeben. Button start rot sein, wenn Sie drücken grün wechseln und wenn Sie erneut drücken Comeback auf rot. Wenn noch einmal drücken, grün ....Ändern Sie die Farbe der Schaltfläche mit Selektor und bleiben Sie diese Farbe

Ich versuche etwas ähnliches zu finden, aber ich kann nichts finden. Ist es möglich, mit einem ziehbaren Selektor zu tun?

Dies ist, dass ich versuche, und bleiben nicht die Farbe, wenn Finish der Presse

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- green state --> 
    <item 
     android:drawable="@drawable/btn_selector_green" 
     android:state_selected="true"></item> 
    <!-- green state --> 
    <item 
     android:drawable="@drawable/btn_selector_green" 
     android:state_pressed="true"></item> 
    <!-- red state --> 
    <item 
     android:drawable="@drawable/btn_selecto_come_back"></item> 

</selector> 

Vielen Dank im Voraus

Antwort

0

Wenn die Taste seinen Zustand gedrückt wird, ändert „state_pressed“ zu. Dies geschieht jedoch nicht für state_selected. Wenn Sie einen Button und den ausgewählten Status verwenden möchten, müssen Sie den Status der Schaltfläche explizit über code festlegen, fügen Sie einen onClickListener zu Ihrer Schaltfläche hinzu und in onClick() do:

button.setSelected(!button.isSelected()); 

Dies schaltet den ausgewählten Status jedes Mal um, wenn die Taste gedrückt wird.

+0

Hallo Franesco, Ist es nicht möglich, es über Selektor ziehbar zu tun? –

+0

Sie können, aber AFAIK verwendet keine Schaltfläche, versuchen Sie, ToggleButton zu betrachten und stattdessen den aktivierten Status zu verwenden. Das sollte funktionieren. https://developer.android.com/guide/topics/ui/controls/togglebutton.html –

0

Warum machst du das nicht programmatisch?

verwenden nur einen einfachen Wähler innerhalb des OnClickListener

if (Anklicken = 1)

button.setBackgroundResource (R.drawable.green);

sonst

button.setBackgroundResource (R.drawable.red);

Verwandte Themen