layout_width - layouts para diferentes pantallas android
¿El valor es igual a match_parent o fill_parent en dimens.xml? (6)
Dependiendo de por qué quiere definir match_parent
en un @dimen, este caso de uso podría ayudarlo a:
En lugar de definir el ancho y la altura en dimen.xml, puede definirlo como un estilo en styles.xml
yo suelo
//res/values/styles.xml
<style name="IntroLayout">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
</style>
y
//res/values-sw600dp/styles.xml
<style name="IntroLayout">
<item name="android:layout_width">520dp</item>
<item name="android:layout_height">wrap_content</item>
</style>
y usarlo como
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_gravity="center"
style="@style/IntroLayout">
lo que me permite establecer dinámicamente los atributos de ancho y alto para dispositivos de diferentes tamaños sin tener que escribir ningún código y puede usar match_parent / wrap_content fine. también puede usar cualquier @dimen que haya definido previamente en el estilo si lo desea.
Utilizo esto porque el diseño para el teléfono y la tableta es el mismo, excepto que quiero arreglar el ancho en la tableta pero llenar el teléfono principal, por lo que ahorra tener que tener 2 diseños diferentes con básicamente el mismo xml
Basado aquí en la sección de Atributos XML , especifico lo siguiente en mi dimens.xml
:
<dimen name="match_parent">-1dp</dimen>
<dimen name="main_left_menu_user_account_width">@dimen/match_parent</dimen>
<dimen name="main_left_menu_user_account_height">@dimen/match_parent</dimen>
Luego uso las dos dimensiones en mi diseño:
<ImageView
android:id="@+id/userAccountImage"
android:background="@drawable/user_account"
android:layout_width="@dimen/main_left_menu_user_account_width"
android:layout_height="@dimen/main_left_menu_user_account_height" />
Luego, cuando hago una vista previa de la Graphical Layout
, se queja:
Debe suministrar un atributo layout_width.
Debe suministrar un atributo layout_height.
¿De verdad puedo definir un valor igual a match_parent en dimens.xml
?
Actualizar:
También probé esto, pero la vista previa todavía se queja:
<dimen name="main_left_menu_user_account_width">-1dp</dimen>
<dimen name="main_left_menu_user_account_height">-1dp</dimen>
Utilizo con éxito wrap_content
(el Graphical Layout
no se queja en absoluto):
<dimen name="wrap_content">-2dp</dimen>
<dimen name="main_right_menu_width">@dimen/wrap_content</dimen>
<dimen name="main_right_menu_height">@dimen/wrap_content</dimen>
No lo creo. @ dimen / match_parent es una longitud específica con la unidad, mientras que match_parent es una bandera especial.
Para dispositivos HTC, use esto para lograr match_parent:
<dimen name="my_match_parent">-1.0px</dimen>
Primero crea attribs.xml:
<resources>
<item name="match_parent" type="dimen">-1</item>
<item name="wrap_content" type="dimen">-2</item>
</resources>
Segundo uso tu dimens:
<dimen name="account_width">@dimen/match_parent</dimen>
<dimen name="account_height">@dimen/wrap_content</dimen>
También puedes lograr esto usando el archivo integers.xml
archivo integers.xml
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="match_parent">-1</integer>
<integer name="wrap_content">-2</integer>
</resources>
Usar en dimens.xml
:
<dimen name="main_right_menu_width">@integer/wrap_content</dimen>
También puede recibir una advertencia de lint
, para suprimir su uso:
<dimen name="main_right_menu_width" tools:ignore="ReferenceType">@integer/wrap_content</dimen>
Usa esto, me funciona
<dimen name="custom_wrap_content">-2px</dimen>
<dimen name="horizontal_border_height">@dimen /custom_wrap_content</dimen>
<dimen name="custom_match_parent">-1px</dimen>
<dimen name="vertical_border_height">@dimen /custom_match_parent</dimen>
Y la razón por la cual match_parent
no se ejecuta. No puede suministrar una compilación en palabra clave como match_parent
Editar: Use px
lugar de dp
como lo sugiere Jarett Millard en los comentarios.