Android Tutorial StateListDrawable Beispiel

klaus

Expert
Licensed User
Longtime User
StateListDrawable ist ein Zeichenfläche-Objekt (drawable object), die andere Zeichenflächen (drawables) enthält. Je nachdem in welchem Zustand sich eine View befindet wird dann die Zeichenfläche angezeigt die dem aktuellen Zustand der View entspricht. StateListDrawable enthält eine Liste von Zuständen. Zustände können "disabled", "enabled", "unchecked", "checked", "pressed" ("unerlaubt", "erlaubt", "nicht angehakt", " angehakt ", "gedrückt") usw sein.
Ein Zustand kann auch eine Kombination von anderen Zuständen sein (wie zum Beispiel "aktiviert" und "gedrückt").

Das StateListDrawable Objekt enthält eine Liste von Zuständen und Zeichenflächen-Paaren. Jedes mal wenn sich der Viewzustand ändert wird die List durchlaufen und der erste Eintrag der die aktuellen Bedingungen erfüllt wird angezeigt.
Bedingungen erfüllen bedeutet, daß alle Elemente von dem Zustand der Liste auch im aktuellen Zustand der View enthalten sind.
Dies bedeutet, daß ein leerer Zustand allen möglichen aktuellen Zuständen entspricht.
Die Reigenfolge der Zustände ist sehr wichtig, da der erste Zustand der paßt angezeigt wird.

Dieses Beispiel erstellt einen ToggleButton und setzt seine zwei Zustände ("unchecked" und "checked") auf zwei ColorDrawables.


Der komplette Code befindet sich im Englischen Originatutorial.
B4X:
Sub Process_Globals

End Sub

Sub Globals

End Sub

Sub Activity_Create(FirstTime As Boolean)
    Dim tb As ToggleButton
    tb.Initialize("") 'no events will be caught
    Dim checked, unchecked As ColorDrawable
    checked.Initialize(Colors.Green, 10dip)
    unchecked.Initialize(Colors.Red, 10dip)

    Dim sld As StateListDrawable
    sld.Initialize
    sld.AddState(sld.State_Checked, checked)
    sld.AddState(sld.State_Unchecked, unchecked)
    tb.Background = sld
    tb.Checked = True
    tb.TextColor = Colors.Blue
    tb.TextSize = 20
    tb.Typeface = Typeface.DEFAULT_BOLD
    Activity.AddView(tb, 100dip, 100dip, 100dip, 100dip)
End Sub
Beachten Sie daß in diesem Fall die Reihenfolge unwichtig ist da kein Zustand einen anderen enthält.

state_list1.png


state_list2.png



Ein kompletteres Beispiel findet man hier Creating a toolbar with buttons
in Post #7.

6855d1294831348-creating-toolbar-icons-toolbar.jpg


Mit verschiedenen Buttons und Tooltips.

 
Top