Kann ich in Android XML buttonStyleSmall oder Button.Small als übergeordneten Stil für einen benutzerdefinierten Stil festlegen?

8

Ich möchte den kleinen Button-Stil von Android erweitern. Ich kann es inline machen:

%Vor%

Aber im Interesse der Wiederverwendbarkeit möchte ich diese Stile in einen benutzerdefinierten Stil übertragen. Wie kann ich buttonStyleSmall (oder Widget.Button.Small ?) Als Eltern zu einem Stil hinzufügen? So etwas in meinem benutzerdefinierten XML-Stil:

%Vor%

mit der Deklaration der Schaltfläche mit diesem Stil:

%Vor%

BEARBEITEN

Unter Verwendung der korrekten Syntax, wie sie von Lukas unten beschrieben wird (benutze @android:attr/buttonStyleSmall als Eltern), sehe ich immer noch einen Unterschied zwischen den beiden:

Schaltfläche mit buttonStyleSmall als Stil und Inline-Stile hinzugefügt:

Angepasster Stil mit buttonStyleSmall als übergeordnetes Element:

Was vermisse ich?

    
annie 23.08.2011, 19:57
quelle

1 Antwort

15

Sie versuchen also Stilinformationen von einem Standard-Android-Stil zu übernehmen. Dazu müssen Sie das parent -Attribut verwenden, wie Sie es bereits getan haben.

Die einzige Ausnahme beim Vererben eines Standardstils ist, dass Sie @ nicht ? verwenden müssen:

%Vor%

Ein wenig mehr darüber, wie man das für Plattformstile macht (weil das anders ist als die Stile, die Sie selbst erstellt haben), finden Sie hier .

Nachdem ich damit herumgespielt habe, habe ich festgestellt, dass die Art und Weise, wie du dich verbringst, korrekt ist, aber der Rückgriff ist falsch:

%Vor%

Das funktioniert.

Der Unterschied liegt darin, dass die Integer-Konstante, die verwendet wird, um dies mithilfe des style -Attributs und im Code hinzuzufügen, in Androids R -klasse in der attr -subclass deklariert ist.

Die XML-Style-Definitionen (von denen Sie tatsächlich erben können) werden in der style -subclass von R -class gespeichert. Also sollte die obige Zeile dein Problem lösen.

    
Lukas Knuth 23.08.2011, 22:10
quelle