web-dev-qa-db-ja.com

dimens.xmlのmatch_parentまたはfill_parentに等しい値?

ここではXML属性 セクションに基づいて、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>

次に、レイアウトで両方のディメンションを使用します。

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

次に、Graphical Layoutをプレビューすると、次のエラーが表示されます。

Layout_width属性を指定する必要があります。

Layout_height属性を指定する必要があります。

実際、dimens.xmlでmatch_parentと等しい値を定義できますか?

更新:

私もこれを試しましたが、プレビューはまだ文句を言います:

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

私は正常にwrap_contentを使用します(Graphical Layoutはまったく文句を言いません):

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

これを使用して、それは私のために働く

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

そして、match_parentが実行されない理由。 match_parentなどのキーワードでビルドを指定することはできません

編集: Jarett Millardがコメントで示唆したように、pxの代わりにdpを使用します。

42
Swetank

最初にattribs.xmlを作成します。

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

次に、あなたの寸法を使用します。

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

@dimenでmatch_parentを定義する理由に応じて、このユースケースが役立ちます。

Dimen.xmlで幅と高さを定義する代わりに、styles.xmlでスタイルとして定義できます。

私が使う

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

そして

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

そしてそれを次のように使用します

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

コードを記述することなく、さまざまなサイズのデバイスの幅と高さの属性を動的に設定でき、match_parent/wrap_content fineを使用できます。必要に応じて、スタイルで以前に定義した@dimenも使用できます。

携帯電話とタブレットのレイアウトが同じであるため、私はこれを使用しますが、タブレットの幅を修正するが、電話の親を埋めたいので、基本的に同じxmlで2つの異なるレイアウトを持つ必要がありません

22
Fonix

HTCデバイスの場合、これを使用してmatch_parentを実現します。

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

integers.xmlファイルを使用してこれを実現することもできます

integers.xmlファイル:

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

dimens.xmlで使用:

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

lint警告が表示されることもあります。

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

そうは思いません。 @ dimen/match_parentは特定の単位の長さで、match_parentは特別なフラグです。

0
Bolton