web-dev-qa-db-fra.com

La valeur est égale à match_parent ou fill_parent dans dimens.xml?

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>
42
Rendy

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.

39
Swetank

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>
35
Ahmad Aghazadeh

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.

20
Fonix

Pour les appareils HTC, utilisez ceci pour atteindre match_parent:

<dimen name="my_match_parent">-1.0px</dimen>
10
ramon

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>
1
Firoz Memon

Je ne pense pas. @ dimen/match_parent est une longueur spécifique avec unité tandis que match_parent est un drapeau spécial.

0
Bolton