Android: Button-state-changed-Ereignis
Einige XML-Attribute für Schaltflächen (wie hintergrund -, Textfarbe, usw.) definiert werden können, mit Farbe oder drawable Status-Liste wie diese:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="#ffff0000"/>
<item android:state_focused="true"
android:color="#ff0000ff"/>
<item android:state_enabled="true"
android:color="#ff00ffff"/>
<item android:color="#ff000000"/>
</selector>
Wenn sich der Zustand ändert (gedrückt/ungepressten, zum Beispiel), die entsprechende Farbe wird automatisch geändert.
Wie kann ich prograqmmatically Griff eine Art stateChangedEvent durchführen komplizierter layout ändern, als nur die änderung einer Farbe (zum Beispiel, ändern Sie schriftart, Größe oder einen anderen text)?
IM GRUNDE U WOLLEN ZEIGEN, DASS, WENN DIE SCHALTFLÄCHE GEKLICKT WIRD, ES WURDE GEDRÜCKT?
so ist es keine Hörer zu hören onSelected? es kann passieren, ohne Klick, wegen einigen anderen Teil des Programms callin setSelected(bool). wie, ohne dabei einen benutzerdefinierten button-Klasse.
so ist es keine Hörer zu hören onSelected? es kann passieren, ohne Klick, wegen einigen anderen Teil des Programms callin setSelected(bool). wie, ohne dabei einen benutzerdefinierten button-Klasse.
InformationsquelleAutor PVoLan | 2011-12-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fokus-änderungen und touch-events können Sie sich registrieren von Listenern setOnFocusChangeListener und setOnTouchListener. Und Veränderungen über die deaktiviert/aktiviert die Staaten, die Sie durchführen können direkt nach der änderung der button-Zustand.
Ein listener für alle Ereignisse? Was für? 🙂 Wenn dem so ist, dann müssen Sie schreiben handler für die große Anzahl von Ereignis-auch wenn Sie brauchen, nur der Fokus verändert. Btw, möchten Sie vielleicht versuchen Sie, schreiben Sie Ihre eigenen benutzerdefinierten Ansicht für den button.
Diejenigen selector löst sich auf, der Ursache. Sehen aus wie etwas in der Klasse Button aufrufen soll eine Art "UpdateColorStateList()", wenn es zu aktualisieren muss der hintergrund auf der Presse/focus/wählen Sie/etc. zum Beispiel. Ich möchte lösen diese.
Erstellen Sie Ihre Klasse, die Sie erweitert-Taste und überschreiben drawableStateChanged wie diese:
@Override protected void drawableStateChanged() { Log.d("TEST", String.format("button focused: %s, enabled: %s, pressed: %s", isFocused() ? "yes" : "no", isEnabled() ? "yes" : "no", isPressed() ? "yes" : "no")); super.drawableStateChanged(); }
und Uhradb logcat TEST:* *:S
. Ich denke, dass dies genau das, was Sie brauchen.danke, ich werde es versuchen
InformationsquelleAutor muffinmad
//verwenden Sie die selector-Methode, um Ihren pass-Taste und Bild
//Sie können Farbe verwenden, auch
InformationsquelleAutor Padma Kumar
Einfach überschreiben Anzuzeigen.setPressed:
InformationsquelleAutor Vadim
Handler onTouch(View v, MotionEvent event) für bestimmte Ansichten und Aktionen im MotionEvent.Up /DOWN-entsprechend Ihrer Anforderung.
InformationsquelleAutor Abhinava
Müssen Sie eine Referenz auf das View-Objekt (Schaltfläche) über
findViewById(<object_id>)
und verwenden Sie die entsprechenden Methoden aus der API.Beispiel:
private Button aButton;
und so weiter, nehmen Sie nur einen Blick auf die API, vor allem geerbten Methoden der Klasse Anzeigen.
InformationsquelleAutor hovanessyan
Muss ich sagen, dass Sie verwenden können, einen (touch-listner) diese Vorgehensweise u verwenden Sie ein touch-listner
finden ur Bild zuerst
Fügen Sie einen Hauch Listner ur Bild
//Hinzufügen einer touch-Methode, die mit Namen image_onTouch
//Bild 1 ist das ur-Bild, die u wollen 2 klicken und Bild 2 ist das Bild, wenn Sie berühren das Bild, das Sie haben, um ein anderes Bild in der Hintergrundfarbe do u wanna show und verwenden Sie es in den code
'== MotionEvent.ACTION_DOWN " ist viel klarer als '== 0'
InformationsquelleAutor Raghav Chopra
Hatte ich auch diese Art von problem in der Vergangenheit. Ich löste, indem Sie diese XML-Datei in separate drawable Ordner in Res nur drawable-mdpi oder anderes. Und stellen Sie sicher, dass Sie geben müssen Xml als Ihre Schaltfläche hintergrund.
InformationsquelleAutor Harsh Trivedi