2016-03-29 27 views
5

W przykładach programistów Androida, blogach itp. Widziałem wiele prefiksów wartości atrybutów stylu. Czy ktoś może opisać, kiedy użyć czego? Na przykład jaka jest różnica między tymi 3 przypadkami?Styl Androida - różnica między stylami @style, android :, @android: style, itp.

parent="@android:style/TextAppearance" 
parent="TextAppearance.AppCompat" 
parent="@style/TextAppearance.AppCompat" 

Jaka jest różnica między tymi 2 przypadkami?

<item name="colorControlNormal">@color/white</item> 
<item name="android:colorControlNormal">@color/white</item> 

Odpowiedz

4

Bez żadnego prefiksu odwołuje się do stylu o tym samym pliku.

@Style odnosi się do pliku projektu style.xml.

@android: styl odniesienia zdefiniowane Android API stylu.

Więcej informacji na temat Style Resource i Style and Themes.

O colorControlNormal vs android: colorControlNormal to to samo wyjaśnienie. Jeśli używasz controlColorNormal, definiujesz kolor stosowany do kontrolek w normalnym stanie w twojej aplikacji. Jeśli używasz android: colorControlNormal, nadpisujesz domyślne ustawienia kolorów zastosowane do sterowania przez system.

+0

Nie dotyczy to aplikacji AppCompat. – technophyle

2

Możesz myśleć o @ jako o sygnalizowaniu, że nadchodzi nazwany zasób.

@type/name identyfikuje zasób typu type (string, kolor, układ, styl itd) z nazwą name określonym w aplikacji jest wymyślanie.

@+id/name identyfikuje zasób identyfikacyjny o nazwie name, który zostanie utworzony, jeśli jeszcze nie istnieje (podczas gdy @id po prostu odwołuje się do identyfikatora, który już istnieje).

@android:type/name oznacza, że ​​nazwany zasób jest częścią platformy Android jest wymyślanie (to nie zdefiniowane w aplikacji - to przewidziane przez urządzenie).

Dla rodziców stylu, @ styl jest opcjonalny. Możesz odwoływać się do stylów bezpośrednio po nazwie. Jest zbędny, ponieważ i tak nie można wyprowadzić stylu z niczego innego niż inny styl.

+0

Dzięki. Czy mógłbyś rozwinąć część colorControlNormal vs android: colorControlNormal? Którego powinienem użyć w moim pliku style.xml? – clocksmith

+1

Nie chodzi o to, który użytkownik * powinien * używać, chodzi o zidentyfikowanie właściwego dla danej sprawy. Jeśli jest to zasób, który sam zdefiniowałeś, po prostu użyj tej nazwy. Jeśli jest to coś zdefiniowane przez platformę Android, potrzebujesz prefiksu Android. –

+0

To jak powiedział Doug. Zobacz mój zredagowany wpis powyżej. –