it-swarm.com.de

Wert entspricht match_parent oder fill_parent in dimens.xml?

Basierend auf hier auf XML-Attributen Abschnitt gebe ich Folgendes in meinem dimens.xml an:

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

Dann verwende ich die beiden Dimensionen in meinem Layout:

<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" />

Wenn ich dann eine Vorschau auf Graphical Layout sehe, klagt es:

Sie müssen ein layout_width-Attribut angeben. 

Sie müssen ein layout_height-Attribut angeben.

Kann ich eigentlich einen Wert definieren, der match_parent in dimens.xml entspricht?

Update:

Ich habe es auch versucht, aber die Vorschau klagt immer noch:

<dimen name="main_left_menu_user_account_width">-1dp</dimen>
<dimen name="main_left_menu_user_account_height">-1dp</dimen>

Ich benutze erfolgreich wrap_content (der Graphical Layout beschwert sich überhaupt nicht):

<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

Verwenden Sie dies, es funktioniert für mich

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

Und der Grund, warum match_parent nicht läuft. Sie können kein eingebautes Schlüsselwort wie match_parentangeben.

Bearbeiten: Verwenden Sie px anstelle von dp, wie von Jarett Millard in den Kommentaren vorgeschlagen.

39
Swetank

Erstellen Sie zuerst attribs.xml:

<resources>
    <item name="match_parent" type="dimen">-1</item>
    <item name="wrap_content" type="dimen">-2</item>
</resources>

Zweitens verwenden Sie Ihre Dimens:

   <dimen name="account_width">@dimen/match_parent</dimen>
   <dimen name="account_height">@dimen/wrap_content</dimen>
35
Ahmad Aghazadeh

Abhängig davon, warum Sie match_parent in @dimen definieren möchten, kann Ihnen dieser Anwendungsfall helfen:

Anstatt Breite und Höhe in dimen.xml zu definieren, können Sie sie in der styles.xml als Stil definieren

Ich benutze

//res/values/styles.xml
<style name="IntroLayout">
    <item name="Android:layout_width">match_parent</item>
    <item name="Android:layout_height">wrap_content</item>
</style>

und 

//res/values-sw600dp/styles.xml
<style name="IntroLayout">
    <item name="Android:layout_width">520dp</item>
    <item name="Android:layout_height">wrap_content</item>
</style>

und benutze es gerne 

<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">

dadurch kann ich die Breiten- und Höhenattribute für Geräte unterschiedlicher Größe dynamisch einstellen, ohne Code schreiben zu müssen, und Sie können match_parent/wrap_content fine verwenden. Sie können jedes @dimen verwenden, das Sie zuvor im Style definiert haben, wenn Sie möchten. 

Ich verwende dies, weil das Layout für das Telefon und das Tablet das gleiche ist, mit der Ausnahme, dass ich die Breite auf dem Tablet festlegen und das übergeordnete Element auf dem Telefon ausfüllen muss. So müssen nicht zwei verschiedene Layouts mit im Wesentlichen demselben XML-Code erstellt werden

20
Fonix

Für HTC-Geräte verwenden Sie dies, um match_parent zu erreichen:

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

Sie können dies auch mit der integers.xml-Datei erreichen

integers.xml datei:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="match_parent">-1</integer>
    <integer name="wrap_content">-2</integer>
</resources>

Verwendung in dimens.xml:

<dimen name="main_right_menu_width">@integer/wrap_content</dimen>

Sie könnten auch lint warning erhalten, um sie zu unterdrücken:

<dimen name="main_right_menu_width" tools:ignore="ReferenceType">@integer/wrap_content</dimen>
1
Firoz Memon

Ich glaube nicht @ dimen/match_parent ist eine bestimmte Länge mit unit, während match_parent ein spezielles Flag ist.

0
Bolton