fill_parentとwrap_contentの違いは何ですか?


276

Androidでは、ウィジェットをレイアウトするとき、fill_parentmatch_parentAPIレベル8以降)との違いは何wrap_contentですか?

参照できるドキュメントはありますか?私はそれをよく理解することに興味があります。


33
はAPIレベル8以降でfill_parent名前が変更さmatch_parentれたことに注意してください。
gfrigon

回答:


266

どちらの属性も、ビューの(ビジュアルコントロール)水平または垂直サイズに適用できます。寸法を明示的に指定するのではなく、コンテンツまたは親レイアウトのサイズに基づいて、ビューまたはレイアウトのサイズを設定するために使用されます。

fill_parentMATCH_PARENTAPIレベル8以降では廃止され、名前が変更されました)

ウィジェットのレイアウトをfill_parentに設定すると、ウィジェットが配置されたレイアウト要素内で使用可能なスペースを占めるように拡張されます。これは、Windowsフォームコントロールのドックスタイルをに設定するのとほぼ同じですFill

最上位のレイアウトまたはコントロールをfill_parentに設定すると、画面全体に表示されます。

wrap_content

ビューのサイズをwrap_contentに設定すると、ビューに含まれる値(または子コントロール)を含むのに十分なだけ拡張するように強制します。テキストボックス(TextView)や画像(ImageView)などのコントロールの場合、これは表示されているテキストまたは画像をラップします。レイアウト要素の場合は、子として追加されたコントロール/レイアウトに合わせてレイアウトのサイズを変更します。

これは、WindowsフォームコントロールのAutosizeプロパティをTrue に設定するのとほぼ同じです。

オンラインドキュメント

こちらのAndroidコードのドキュメントに詳細があります


12
画像の幅が画面の幅よりも大きく、画像ビューの幅をfill_parentに設定した場合はどうなりますか。画像は画面サイズに圧縮されますか?
ジョンワトソン

@JohnWatson答えを見つけましたか?私も知りたいです。
レイチェル

記載されているWindowsフォームコントロールの同等のプロパティを知っておくと便利です。
Rempelos 2016年

@JohnWatsonを見たことある?あなたの話は何ですか?答えは何ですか ?
2016

36

fill_parent(非推奨)=match_parent
子ビューの境界線は、親ビューの境界線と一致するように拡張されます。

wrap_content
子ビューの境界線は、自身のコンテンツをぴったりと囲みます。

以下に、わかりやすくするための画像をいくつか示します。緑と赤ですTextViews。白はLinearLayout透けて見えます。

ここに画像の説明を入力してください

すべてはViewTextViewImageViewButton、など)を設定する必要があるwidthheightビューのを。xmlレイアウトファイルでは、次のようになります。

android:layout_width="wrap_content"
android:layout_height="match_parent"

幅と高さをmatch_parentまたはwrap_contentに設定するだけでなく、絶対値に設定することもできます。

android:layout_width="100dp"
android:layout_height="200dp"

ただし、さまざまなサイズのデバイスに対応する柔軟性がないため、一般的にそれはあまり良くありません。あなたが理解wrap_contentしたmatch_parent後、次に学ぶことはlayout_weightです。

こちらもご覧ください

上記の画像のXML

垂直LinearLayout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="width=wrap height=wrap"
        android:background="#c5e1b0"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="width=match height=wrap"
        android:background="#f6c0c0"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="width=match height=match"
        android:background="#c5e1b0"/>

</LinearLayout>

水平線形レイアウト

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="WrapWrap"
        android:background="#c5e1b0"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="WrapMatch"
        android:background="#f6c0c0"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="MatchMatch"
        android:background="#c5e1b0"/>

</LinearLayout>

注意

この回答の説明では、マージンやパディングがないことを前提としています。しかし、それがあったとしても、基本的な考え方は同じです。ビューの境界線/間隔は、マージンまたはパディングの値によって調整されます。



2

fill_parent

コンポーネントは配置されたレイアウトでありfill_parent、レイアウトユニットメンバーをスペースでできるだけいっぱいに拡大する必要があります。これは、Windowsコントロールのdockstyleプロパティと一致しています。トップセットのレイアウトまたはコントロールfill_parentは、画面全体を占めるように強制します。

wrap_content

サイズのビューを設定すると、wrap_contentすべてのコンテンツを表示するために展開が強制的に表示されます。TextViewとImageViewの制御は、例えば、に設定されwrap_content、その全体の内部のテキストと画像を表示します。レイアウト要素はコンテンツに応じてサイズを変更します。wrap_contentWindowsコントロールをTrueに設定するのとほぼ同じAutosize属性のサイズのビューを設定します。

詳細については、このリンクを確認してください:http : //developer.android.com/reference/android/view/ViewGroup.LayoutParams.html

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.