Estilos de Android: Diferencia entre 'style = "@ android: style / XYZ"' y 'style = "? Android: attr / XYZ"'?
Estoy tratando de estilo botones para parecerse a los que pregunto en Android Full Width ICS estilo Minimalista Bottom ButtonsViews .
He tenido éxito, con el xml siguiente para cualquier persona interesada:
- Definición de 'resValue' utilizando una definición de cadena existente
- ¿Subcarpetas en la carpeta de recursos dibujable?
- ¿Cómo puedo asignar un ID a una vista mediante programación?
- Android: programaticamente setId es da una advertencia Esperado recurso de tipo id
- No se puede usar el color referenciado (por tema) en dibujable
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="bottom" android:divider="@android:drawable/divider_horizontal_dark" android:gravity="bottom" android:orientation="vertical" android:paddingTop="16dip" android:showDividers="beginning|end" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:measureWithLargestChild="true" android:orientation="horizontal" android:divider="@android:drawable/divider_horizontal_dark" android:showDividers="middle" > <Button android:id="@+id/cancel_button" style="?android:attr/buttonBarButtonStyle" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_gravity="left" android:layout_weight="1" android:maxLines="2" android:text="@string/cancel_button" /> <Button android:id="@+id/login_button" style="?android:attr/buttonBarButtonStyle" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_gravity="right" android:layout_weight="1" android:filterTouchesWhenObscured="true" android:maxLines="2" android:text="@string/login_button" /> </LinearLayout> </LinearLayout>
Una pregunta sin embargo. La ayuda de contenido de eclipse no tiene idea de qué está pasando con la siguiente resolución de recursos:
style="?android:attr/buttonBarButtonStyle"
Estoy familiarizado con la resolución típica (de la que la ayuda de contenido de eclipse es consciente)
style=@android/style/...
… pero no estoy claro sobre la diferencia entre los dos. Parece que algunos atributos de estilo aparecen en uno pero no en el otro. Por ejemplo, lo siguiente no se resuelve a nada:
style=@android:attr/buttonBarStyle
Y tampoco lo hace:
style="@android:style/buttonBarStyle
Así que supongo que dos preguntas aquí:
- ¿Por qué la diferencia en la sintaxis de referencia de recursos?
- ¿Por qué la confusión de miscategorization de estilos en bajo una categoría attr.
- ¿Para qué se utiliza la categoría attr?
¡Gracias!
- Android getResources (). GetDrawable () API obsoleto 22
- La razón de los activos y recursos crudos en Android
- Recursos $ NotFoundException drawable-xhdpi de un recurso extraíble
- Recursos de Android por género
- Configuración de la imagen de fondo de la vista web a un gráfico de recursos en Android
- La adición de un archivo xml de recursos al proyecto conduce a una excepción de tiempo de ejecución
- Código de lengua para flamenco
- ¿Cómo puedo obtener el atributo fgcolor para trabajar en versiones recientes de Android?
De otra respuesta a SO (parafraseada aquí):
El uso de un signo de interrogación delante de un ID significa que desea acceder a un atributo de estilo que se define en un tema de estilo, en lugar de codificar el atributo de forma segura.
Piense en ello como desreferencia de un atributo de tema para buscar el recurso al que apunta en lugar de referirse al atributo en sí.
Referencia de los atributos de estilo
? Android: attr / buttonBarButtonStyle o simplemente ? Android: buttonBarButtonStyle – (attr es opcional)
<item name="buttonBarButtonStyle">@android:style/Widget.Button</item>
Esto internamente dereferences a @android: style / Widget.Button que se define dentro del archivo appcompat / res / values / themes.xml .
(? Android 🙂 – siempre enlaza con el valor del atributo del tema actual aplicado. Esto nos permite referirnos al estilo definido por android, creando uno nuevo y suministrando un valor codificado.
Google Doc dice: "Utiliza el estilo que se define por este atributo, en el tema actual"
- No puedo encontrar la causa de mi accidente con este seguimiento de pila
- ¿Cómo puedo crear una barra de botones de encabezado o pie de página para mi aplicación de Android?