web-dev-qa-db-ja.com

ConstraintLayoutで制約に一致するように幅を設定する

ビューの左右を親ビューの余白に制限し、割り当てられたスペースを埋めるようにします。ただし、widthをmatch_parentまたはwrap_contentに設定しても同じ結果になります。

(match_parentおよびwrap_contentとは対照的に)match_constraintsと同等のものはありますか? match_parentwrap_contentはレイアウトに影響しますか、それとも新しい制約レイアウトで無視されますか?

私のお気に入りのプラットフォーム用のこの新しいレイアウトシステムを愛しています!

74
KG6ZVP

match_parentはサポートされていません。 0dpを使うと、制約を「残っているものを埋める」のではなく「スケーラブル」と考えることができます。

また、0dpは位置によって定義できます。ここでmatch_parentはその位置(x、y、および幅、高さ)を親に依存します。

88
brob

match_parentは許可されていません。しかし、実際には幅と高さを0dpに設定し、上下または左右の制約を「parent」に設定することができます。

たとえば、match_parent制約を要素の幅に適用したい場合は、次のようにします。

<TextView
    Android:layout_width="0dp"
    Android:layout_height="wrap_content"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintEnd_toEndOf="parent"/>
148
Arieck

どうやらmatch_parentは次のとおりです。

  • NOT OKConstraintLayoutの直下のビューの場合
  • OKConstraintLayoutの直下にあるビューの内側にネストされたビューの場合

ビューをmatch_parentとして機能させる必要がある場合は、次のようにします。

  1. 直接の子供ConstraintLayout0dpを使うべきです
  2. ネストした要素(例:ConstraintLayoutへの孫)match_parentを使用できます

例:

<Android.support.constraint.ConstraintLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:paddingBottom="16dp">

    <Android.support.design.widget.TextInputLayout
        Android:id="@+id/phoneNumberInputLayout"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent">

        <Android.support.design.widget.TextInputEditText
            Android:id="@+id/phoneNumber"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"/>

    </Android.support.design.widget.TextInputLayout>
22
Gene Bo

match_parentConstraintLayoutではサポートされていません。幅を0dpに設定して制約に一致させます。

13

公式文書 から:

重要:MATCH_PARENTはConstraintLayoutに含まれるウィジェットにはお勧めできません。 MATCH_CONSTRAINTを使用して、対応する左または右または上/下の制約を "parent"に設定することで、同様の動作を定義できます。

あなたがMATCH_PARENT効果を達成したいのであれば、あなたはこれを行うことができます:

<TextView
    Android:id="@+id/textView"
    Android:layout_width="0dp"
    Android:layout_height="wrap_content"
    Android:gravity="center"
    Android:text="TextView"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" />
8
xymelon

Match_parentとしてのビューを直接作成することはできませんが、少し異なる方法で行うことができますが、RTLサポートを使用する場合はStartおよびEndと一緒にLeftおよびRight属性を使用することを忘れないでください。

    <Button
Android:layout_width="0dp"
Android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
2

幅または高さ(親に一致させる必要があるもの)を0dpに設定し、左、右、上、下の余白を一致親として機能するように設定します。

1
santhosh

オフィスの文書で: https://developer.Android.com/reference/Android/support/constraint/ConstraintLayout

ディメンションがMATCH_CONSTRAINTに設定されている場合、デフォルトの動作では、結果のサイズが使用可能なスペースすべてを占めます。

0dpを使用します。これは "MATCH_CONSTRAINT"と同じです。

重要:MATCH_PARENTはConstraintLayoutに含まれるウィジェットにはお勧めできません。 MATCH_CONSTRAINTを使用して、対応する左または右または上/下の制約を "parent"に設定することで、同様の動作を定義できます。

1
Chuanxing Zhao

あなたのアダプタをチェックすることができます。

 1 - MyLayoutBinding binding = MyLayoutBinding.inflate(layoutInflater);
 2 - MyLayoutBinding binding = MyLayoutBinding.inflate(layoutInflater, viewGroup, false);

私が1を使用したとき、私はあなたと同じ問題を抱えていました。あなたは2を試すことができます。

0
Kim Jeong woo