2011-08-23 6 views
8

Chcę rozszerzyć styl małego przycisku na Androida. Mogę to zrobić w linii:W Androidzie XML, czy mogę ustawić dla stylu niestandardowego przycisk ButtonStyleSmall lub Button.Small jako styl nadrzędny?

<Button android:id="@+id/myButton" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_alignParentRight="true" 
     android:layout_gravity="right" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:textSize="10dp" 
     android:text="Click Here"/> 

Jednak w interesie ponownego wykorzystania chcę przenieść te style do niestandardowego stylu. Jak mogę dodać buttonStyleSmall (lub Widget.Button.Small?) Jako rodzica do stylu? Coś jak to w moim zwyczaju stylu XML:

<style name="RightLink" parent="?android:attr/buttonStyleSmall"> 
    <item name="android:layout_alignParentRight">true</item> 
    <item name="android:layout_gravity">right</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:layout_width">wrap_content</item> 
    <item name="android:paddingLeft">2dp</item> 
    <item name="android:paddingRight">2dp</item> 
    <item name="android:textSize">10dp</item> 
</style> 

z deklaracją przycisku przy użyciu tego stylu:

<Button android:id="@+id/myButton" 
     style="@style/RightLink" 
     android:text="Click Here"/> 

EDIT

użyciu poprawnej składni jak opisali Lukas poniżej (użyj @android:attr/buttonStyleSmall jako rodzica), nadal widzę różnicę między tymi dwoma:

Przycisk z guzikiemSty leSmall jak style i style inline dodania:

pic1

niestandardowy styl z buttonStyleSmall jako nadrzędny:

pic2

Czego mi brakuje?

+0

Witam, jakie jest całe rozwiązanie tego? Czy możesz opublikować pełny kod? – Emerald214

Odpowiedz

15

Próbujesz więc inherit style informations ze standardowego stylu Androida. W tym celu będziesz musiał użyć atrybutu parent, tak jak już zrobiłeś.

Jedynym wyjątkiem, kiedy dziedziczy styl standardowy jest, że trzeba użyć nie @?:

<style name="RightLink" parent="@android:attr/buttonStyleSmall"> 

Nieco więcej o tym, jak to zrobić dla stylów platformy (ponieważ różni się od stylów ty stworzony) można znaleźć here.


Po zabawy z nim i stwierdził, że sposób, w jaki inhirate jest poprawna, ale odwołanie jest źle:

<style name="RightLink" parent="@android:style/Widget.Button.Small"> 

To działa.

Szwy różnica się, że liczba całkowita stałego, które stosuje się do tego dodać stosując style -attribute a kod jest zadeklarowane Androidy R -class w attr -subclass.

Definicje stylu XML (z których faktycznie można dziedziczyć) są przechowywane w klasie klasy R. Tak więc powyższa linia powinna rozwiązać twój problem.

+0

niesamowite niesamowite ..... chciałbym móc głosować milion razy. dziękuję dzięki – user4o01

+1

, więc jestem zdezorientowany, jest nadal ważny wiersz? Android Studio twierdzi, że tak nie jest. –

+0

@Danielochoa Nie próbowałem tego, ponieważ jeśli kompiluje, powinieneś być w porządku. –

Powiązane problemy