2012-01-04 32 views

Respuesta

5

Esa sintaxis se utiliza para hacer referencia a un atributo de estilo de sistema, y ​​es similar a la sintaxis utilizada para hacer referencia a un recurso predefinido por el sistema Android: mientras que en el caso de recursos generales se usa p. @android:drawable/ic_media_play para hacer referencia a Drawable representado por el archivo ic_media_play.png en el valor android:src del elemento ImageButton UI incluido en un diseño XML, la referencia de atributo se genera utilizando ? en lugar de @, pero para el resto se compone siguiendo el mismo reglas y funciona de la misma manera.

En particular, los atributos se almacenan generalmente en res/values/attrs.xml, donde se puede encontrar (mirando a los recursos del sistema almacenados en el SDK de Android) La siguiente

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

lo que indica que el atributo es una referencia a algún otro recurso . El atributo de estilo se define en res/values/themes.xml de la siguiente manera:

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

que es de hecho una referencia al estilo Widget.ProgressBar.Horizontal en el sistema res/values/styles.xml como ya se ha descrito por otra respuesta.

Tenga en cuenta que, en contextos en que el sistema sabe esperar una referencia a un recurso de atributo, incluso se puede omitir el tipo de recurso (es decir, la parte attr/), lo que lleva a una sintaxis como:

android:textColor="?android:textColorSecondary" 

usted puede encontrar un poco más de información sobre el Android developer guide

1

android: attr significa que este estilo se elige de frameworks de android. Así que si usted navega por la fuente de styles.xml de marcos http://bit.ly/yBC5pM y buscar progressBarStyleHorizontal, Se puede ver que hereda de 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> 

Todas las propiedades anteriores + inmuebles de Widget.Progressbar (Dado que su padre es esto) se heredará a su barra de progreso.

+0

Mi pregunta está relacionada con la sintaxis en la que se define "style =" androide el estilo:? attr /" – prashant

+0

como Giulio dijo, que forma parte de sintaxis se puede encontrar en el enlace proporcionado por él – nandeesh