temas - ¿Cómo referir el atributo android layout_width de un atributo personalizado?
styles android studio (4)
He encontrado una solución cambiando los valores / attrs.xml a:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<attr name="layoutWidth" format="dimension">
<enum name="fill_parent" value="-1" />
<enum name="match_parent" value="-1" />
<enum name="wrap_content" value="-2" />
</attr>
</resources>
Ahora, puedo escribir en values / themes.xml :
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme" parent="android:Theme">
<item name="layoutWidth">match_parent</item>
</style>
<resources>
Pero la pregunta sigue siendo: ¿es posible referirse al parámetro Android layout_width desde este lugar?
Quiero separar el uso de mi aplicación en dispositivos xlarge y su uso en otros dispositivos para restringir el parámetro layout_width en 720dp para xlarge. Para este propósito, creo values / attrs.xml :
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<attr name="layoutWidth" format="reference|dimension" />
</resources>
con parámetro personalizado layoutWidth para configurarlo en
android:layout_width="?layoutWidth"
Furtner, necesito especificar dos archivos themes.xml para los dispositivos xlarge y ordinarios en los directorios values-xlarge y values :
values-xlarge / themes.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme" parent="android:Theme">
<item name="layoutWidth">720dp</item>
</style>
</resources>
values / themes.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme" parent="android:Theme">
<item name="layoutWidth">What should I write here!?</item>
</style>
</resources>
Entonces, ¿cómo puedo hacer una referencia en el parámetro Android "fill_parent" en este lugar? Parece @android: layout_width / fill_parent , pero tengo un error de compilación:
No resource found that matches the given name (at ''layoutWidth'' with value ''@android:layout_width/fill_parent'').
No estoy seguro si puede agregar este atributo en algún lugar de sus recursos o etiquetas de estilo, pero puede ser útil (si es legal)
xmlns: android = "http://schemas.android.com/apk/res/android"
Esto especifica el espacio de nombre donde se definen layout_width y layout_height (así como también las constantes fill_parent y wrap_content).
Bueno, esta es una respuesta tardía ... pero, para la posteridad y la cordura, la respuesta se puede encontrar a continuación y se puede encontrar más información en http://developer.android.com/guide/topics/ui/themes.html
styles.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="YourStyle" parent="@android:style/TextAppearance.Medium">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>
</style>
</resources>
Esto debería funcionar para cualquier estilo principal que use android: layout_width, como parent = "@ android: style / Widget.TextView"
Debe crear el archivo attrs.xml dentro de la carpeta de valores y luego agregar el siguiente código:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="custom_match_parent" type="dimen">-1</item>
<item name="custom_wrap_content" type="dimen">-2</item>
</resources>
Para acceder al attrs.xml creado anteriormente, agregue la siguiente línea dentro de su archivo dimens.xml de la siguiente manera:
<dimen name="max_layout_width">@dimen/custom_match_parent</dimen>
Ahora para acceder a eso desde un archivo de diseño debe hacer algo como
<FrameLayout
android:layout_width="@dimen/max_layout_width"
android:layout_height="match_parent">
<!--Do what you like to do here-->
</FrameLayout>
¡Espero que esto ayude! :-)