2012-11-04 22 views
34

Pytanie: Gdzie mogę znaleźć domyślne style xml z szesnastkowymi kodami kolorów?Android - domyślny styl przycisku

Szukam Style „ButtonStyle” i inne style domyślne czarownica wpływają aspekty jak TextView, przyciski itp (jeśli nie zmienić styl aspekcie)

I wyglądał w <instalation_folder>\android-sdk\platforms\android-<versio>\data\res\values i <instalation_folder>\android-sdk\platforms\android-<version>\data\res\colors ale nie zrobił” t faktycznie znaleźć to, czego szukałem.

Mam nadzieję, że moje pytanie jest jasne.


Z powodu niskiej reputacji nie mogę jeszcze odpowiedzieć na to pytanie. Oto odpowiedź

odpowiedzi

Przy odrobinie googlowania znalazłem 'ButtonStyle' jest rzeczywiście 'Widget.Button' - Styling Android With Defaults

Jak to działa:

  • Jak już powiedziałem, styl "buttonStyle" to styl "Widget.Button" zdefiniowany w \android-sdk\platforms\android-<version>\data\res\values\styles.xml. Tło jest ustawione na: @android:drawable/btn_default
  • \android-sdk\platforms\android-<version>\data\res\drawable\btn_default.xml określa kolor tła przycisku jako selektora. Kolor zależy od stanu przycisku. Domyślny kolor jest ustawiony na @drawable/btn_default_normal
  • Przy odrobinie szukając znalazłem, że btn_default_normal jest PNG znajdujący się \android-sdk\platforms\android-<version>\data\res\drawable-mdpi

Uważam, że to trochę dziwne, ale mam nadzieję, że komuś pomóc, może ...

Odpowiedz

113

Zrozumienie działania stylów Androida może być nieco kłopotliwe.

Postaram się wyjaśnić, jak podstawowy byłby przepływ pracy, na podstawie przykładu.

Załóżmy, że chcesz wiedzieć, jakie jest domyślne tło dla przycisków. Może to być zwykły kolor (mało prawdopodobny) lub wyciągany (istnieje wiele różnych typów elementów do rysowania).

Android ma motywy. Motyw w zasadzie definiuje, który styl jest stosowany do którego widgetu. Dlatego naszym pierwszym krokiem jest znalezienie domyślnego motywu Androida.

go znaleźć pod android-sdk\platforms\android-15\data\res\values\themes.xml

W tym pliku motywu, szukaj button.

Znajdziesz coś takiego:

<!-- Button styles --> 

<item name="buttonStyle">@android:style/Widget.Button</item> 

Oznacza to, że temat dotyczy styl Widget.Button do przycisków.

OK, teraz znajdź styl Widget.Button.

Wszystko domyślny styl Android są zdefiniowane w pliku android-sdk\platforms\android-15\data\res\values\styles.xml

teraz szukać Widget.Button

Znajdziesz coś takiego:

<style name="Widget.Button"> 
    <item name="android:background">@android:drawable/btn_default</item> 
    <item name="android:focusable">true</item> 
    <item name="android:clickable">true</item> 
    <item name="android:textAppearance">?android:attr/textAppearanceSmallInverse</item> 
    <item name="android:textColor">@android:color/primary_text_light</item> 
    <item name="android:gravity">center_vertical|center_horizontal</item> 
</style> 

Interesującą linii to:

<item name="android:background">@android:drawable/btn_default</item>

Oznacza to, że istnieje zestaw do pobrania o nazwie btn_default jako tło przycisku.

Teraz musimy znaleźć plik o nazwie btn_default.* w jednym z folderów do rysowania pod numerem android-sdk\platforms\android-15\data\res.

Może to być obraz (bardzo mało prawdopodobny) lub plik XML, taki jak btn_default.xml.

Po trochę poszukiwania można odnaleźć pliku android-sdk\platforms\android-15\data\res\drawable\btn_default.xml

Zawiera on mniej więcej tak:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_window_focused="false" android:state_enabled="true" android:drawable="@drawable/btn_default_normal" /> 
    <item android:state_window_focused="false" android:state_enabled="false" android:drawable="@drawable/btn_default_normal_disable" /> 
    <item android:state_pressed="true" android:drawable="@drawable/btn_default_pressed" /> 
    <item android:state_focused="true" android:state_enabled="true" android:drawable="@drawable/btn_default_selected" /> 
    <item android:state_enabled="true" android:drawable="@drawable/btn_default_normal" /> 
    <item android:state_focused="true" android:drawable="@drawable/btn_default_normal_disable_focused" /> 
    <item android:drawable="@drawable/btn_default_normal_disable" /> 
</selector> 

Teraz trzeba zrozumieć, że jest to odkształcalne selektor (jeden z wielu rozciągliwych typów). Ten selektor wybiera różne tła, w zależności od stanu przycisków. Na przykład, jeśli przyciski są wciśnięte, ma inne tło.

Spójrzmy na stan domyślny.

<item android:state_enabled="true" android:drawable="@drawable/btn_default_normal" />

Dotyczy rozciągliwej nazwie btn_default_normal.

Teraz musimy znaleźć to wyciągnięcie.

Znów musimy znaleźć plik o nazwie btn_default_normal.* w jednym z folderów do rysowania pod numerem android-sdk\platforms\android-15\data\res.

Może to być ponownie obraz lub plik XML, taki jak btn_default_normal.xml.

Znajdziesz wiele plików o nazwie "btn_default_normal.9.png" w różnych folderach do rysowania dla różnych rozdzielczości.

:) Teraz już wiesz, że btn_default_normal.9.png jest ustawiony jako tło przycisku.

+1

Dzięki! bardzo dobrze wyjaśnione. – Zombie

+6

Wow, to była świetna odpowiedź :) – theapache64

6

można znaleźć domyślne style android widgetów kiedy zadeklarować w XML:

style="@android:style/Widget.Button" - standard Button 
style="@android:style/Widget.TextView" - standard TextView 

Na przykład to jest styl domyślny przycisk:

<style name="Widget.Button"> 
     <item name="android:background">@android:drawable/btn_default</item> 
     <item name="android:focusable">true</item> 
     <item name="android:clickable">true</item> 
     <item name="android:textAppearance">?android:attr/textAppearanceSmallInverse</item> 
     <item name="android:textColor">@android:color/primary_text_light</item> 
     <item name="android:gravity">center_vertical|center_horizontal</item> 
    </style> 

tła domyślnego przycisku:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/btn_default_normal" android:state_enabled="true" android:state_window_focused="false"/> 
    <item android:drawable="@drawable/btn_default_normal_disable" android:state_enabled="false" android:state_window_focused="false"/> 
    <item android:drawable="@drawable/btn_default_pressed" android:state_pressed="true"/> 
    <item android:drawable="@drawable/btn_default_selected" android:state_enabled="true" android:state_focused="true"/> 
    <item android:drawable="@drawable/btn_default_normal" android:state_enabled="true"/> 
    <item android:drawable="@drawable/btn_default_normal_disable_focused" android:state_focused="true"/> 
    <item android:drawable="@drawable/btn_default_normal_disable"/> 
</selector> 

Możesz uzyskać domyślny kolor za pomocą y edytor grafiki: ścieżka do domyślnego przycisku NinePatch.. \ android-sdk \ platformy \ android-13 \ dane \ res \ drawable-hdpi

+1

jak to zrobić dla biblioteki Appcompat? Android: Widget.Button na @ style/Widget.AppCompat.Button nie działa! –

Powiązane problemy