2012-01-04 12 views

Odpowiedz

5

Ta składnia służy do odniesienia do atrybutu stylu systemu i jest podobna do składni używanej do odniesienia do zasobu predefiniowanego przez system Android: podczas gdy w ogólnym przypadku zasobów używasz np. @android:drawable/ic_media_play w celu odniesienia do elementu Draw, reprezentowanego przez plik ic_media_play.png w wartości atrybutu android:src dla elementu interfejsu użytkownika ImageButton zawartego w układzie XML, odniesienie do atrybutu jest tworzone przy użyciu ? zamiast @, ale reszta składa się z tego samego zasady i działa w ten sam sposób.

W szczególności atrybuty są zwykle przechowywane w res/values/attrs.xml, gdzie można znaleźć (patrząc na zasoby systemowe przechowywane w Android SDK) dodaje

<attr name="progressBarStyleHorizontal" format="reference" /> 

wskazujących, że atrybut jest odwołaniem do innego zasobu . Atrybut styl jest zdefiniowana w res/values/themes.xml w następujący sposób:

<item name="progressBarStyleHorizontal"> 
    @android:style/Widget.ProgressBar.Horizontal 
</item> 

które jest rzeczywiście odniesienie do stylu Widget.ProgressBar.Horizontal w systemie res/values/styles.xml jak już opisany przez inną odpowiedź.

zauważyć, że w sytuacjach, gdy system zna się spodziewać odwołanie do zasobu atrybutu, można nawet pominąć typ zasobu (czyli attr/ części), co prowadzi do składni, takich jak:

android:textColor="?android:textColorSecondary" 

może się okazać nieco więcej informacji na temat Android developer guide

1

Android: attr oznacza, że ​​ten styl jest wybierany ze struktur systemu Android. Więc jeśli przeglądać źródła styles.xml z ram http://bit.ly/yBC5pM i szukać progressBarStyleHorizontal, można zobaczyć go dziedziczy Widget.ProgressBar.Horizontal

<style name="Widget.ProgressBar.Horizontal" parent="@style/Widget.ProgressBar"> 
    <item name="maxHeight">20.0dip</item> 
    <item name="indeterminateOnly">false</item> 
    <item name="indeterminateDrawable">@drawable/progress_indeterminate_horizontal</item> 
    <item name="progressDrawable">@drawable/progress_horizontal</item> 
    <item name="minHeight">20.0dip</item> 
</style> 

wszystkich powyższych właściwości + właściwości z Widget.Progressbar (Ponieważ jego rodzic jest tym), zostanie on odziedziczony do paska postępu.

+0

Moje pytanie związane jest ze składnią, w których styl jest zdefiniowany „style =” android: atr /” – prashant

+0

jak Guilio powiedział, część składni można znaleźć pod linkiem przez niego dostarczone – nandeesh