Basé sur ici sur les attributs XML section, je précise ce qui suit dans mon 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>
Ensuite, j'utilise les deux dimensions dans ma mise en page:
<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" />
Ensuite, lorsque je prévisualise en Graphical Layout
, il se plaint:
Vous devez fournir un attribut layout_width.
Vous devez fournir un attribut layout_height.
En réalité, puis-je définir une valeur égale à match_parent dans dimens.xml
?
Mettre à jour:
J'ai aussi essayé mais l'aperçu se plaint toujours:
<dimen name="main_left_menu_user_account_width">-1dp</dimen>
<dimen name="main_left_menu_user_account_height">-1dp</dimen>
J'utilise avec succès wrap_content
(le Graphical Layout
ne se plaint pas du tout):
<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>
Utilise ça, ça marche pour moi
<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>
Et la raison pour laquelle match_parent
ne fonctionne pas. Vous ne pouvez pas fournir de mot clé de construction tel que match_parent
Edit: Utilisez px
au lieu de dp
comme suggéré par Jarett Millard dans les commentaires.
Commencez par créer attribs.xml:
<resources>
<item name="match_parent" type="dimen">-1</item>
<item name="wrap_content" type="dimen">-2</item>
</resources>
Deuxième utilisation de vos dimens:
<dimen name="account_width">@dimen/match_parent</dimen>
<dimen name="account_height">@dimen/wrap_content</dimen>
Selon la raison pour laquelle vous souhaitez définir match_parent
dans un @dimen, ce cas d'utilisation peut vous aider:
Au lieu de définir la largeur et la hauteur dans dimen.xml, vous pouvez le définir comme style dans le fichier styles.xml.
J'utilise
//res/values/styles.xml
<style name="IntroLayout">
<item name="Android:layout_width">match_parent</item>
<item name="Android:layout_height">wrap_content</item>
</style>
et
//res/values-sw600dp/styles.xml
<style name="IntroLayout">
<item name="Android:layout_width">520dp</item>
<item name="Android:layout_height">wrap_content</item>
</style>
et l'utiliser comme
<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">
ce qui me permet de définir dynamiquement les attributs width et height pour des périphériques de tailles différentes sans avoir à écrire de code et vous pouvez utiliser match_parent/wrap_content fine. vous pouvez utiliser n'importe quel @dimen que vous avez défini précédemment dans le style si vous le souhaitez.
J'utilise ceci parce que la disposition pour le téléphone et la tablette est la même, sauf que je veux fixer la largeur sur la tablette mais remplir le parent sur le téléphone.
Pour les appareils HTC, utilisez ceci pour atteindre match_parent:
<dimen name="my_match_parent">-1.0px</dimen>
Vous pouvez également y parvenir en utilisant le fichier integers.xml
integers.xml
fichier:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="match_parent">-1</integer>
<integer name="wrap_content">-2</integer>
</resources>
Utiliser dans dimens.xml
:
<dimen name="main_right_menu_width">@integer/wrap_content</dimen>
Vous pouvez également obtenir un avertissement lint
, pour le supprimer, utilisez:
<dimen name="main_right_menu_width" tools:ignore="ReferenceType">@integer/wrap_content</dimen>
Je ne pense pas. @ dimen/match_parent est une longueur spécifique avec unité tandis que match_parent est un drapeau spécial.