Programing

ConstraintLayout의 제약 조건과 일치하도록 너비 설정

lottogame 2020. 10. 11. 09:01
반응형

ConstraintLayout의 제약 조건과 일치하도록 너비 설정


뷰의 왼쪽과 오른쪽을 부모 뷰의 여백으로 제한하고 할당 된 공간을 채우고 싶습니다. 그러나 너비를 match_parent또는 중 하나로 설정 wrap_content하면 동일한 결과가 생성되는 것으로 보입니다.

match_constraints (match_parent 및 wrap_content와 반대)와 동등한 것이 있습니까? 수행 match_parentwrap_content레이아웃에 영향을하거나 새로운 제약 레이아웃 무시됩니다?

내가 좋아하는 플랫폼을위한이 새로운 레이아웃 시스템을 좋아합니다!


match_parent지원되지 않습니다. 을 사용하면 0dp제약 조건을 '남은 것을 채우는 것'이 아니라 '확장 가능'하다고 생각할 수 있습니다.

또한 위치 (x, y 및 너비, 높이)에 대해 부모에 의존 0dp하는 위치로 정의 할 수 있습니다.match_parent


match_parent허용되지 않습니다. 그러나 실제로 너비와 높이를 0dp로 설정하고 위쪽 및 아래쪽 또는 왼쪽 및 오른쪽 제약 조건을 "부모"로 설정할 수 있습니다.

예를 들어 match_parent요소의 너비에 제한을두고 싶다면 다음과 같이 할 수 있습니다.

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

분명히 match_parent:

  • 바로 아래의보기에는 적합 하지 않음ConstraintLayout
  • 바로 아래에있는 뷰 내부에 중첩 된 뷰의 경우 OKConstraintLayout

따라서 뷰가으로 작동해야하는 경우 match_parent다음을 수행하십시오.

  1. 의 직접적인 아이들ConstraintLayout사용해야합니다0dp
  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>

match_parent에서 지원되지 않습니다 ConstraintLayout. 0dp제약 조건과 일치하도록 너비를 설정 합니다.


로부터 공식 문서 :

중요 : MATCH_PARENT는 ConstraintLayout에 포함 된 위젯에 권장되지 않습니다. MATCH_CONSTRAINT를 사용하여 해당하는 왼쪽 / 오른쪽 또는 위쪽 / 아래쪽 제약 조건을 "부모"로 설정하여 유사한 동작을 정의 할 수 있습니다.

따라서 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" />

match_parent로보기를 직접 만드는 것은 불가능하지만 약간 다른 방식으로 할 수 있지만 Start 및 End와 함께 Left 및 Right 속성을 사용하는 것을 잊지 마십시오. RTL 지원을 사용하는 경우 coz가 필요합니다.

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

너비 또는 높이 (부모와 일치하는 데 필요한 것)를 0dp로 설정하고 왼쪽, 오른쪽, 위쪽, 아래쪽 여백을 설정하여 일치하는 부모 역할을합니다.


사무실 문서 : https://developer.android.com/reference/android/support/constraint/ConstraintLayout

When a dimension is set to MATCH_CONSTRAINT, the default behavior is to have the resulting size take all the available space.

Using 0dp, which is the equivalent of "MATCH_CONSTRAINT"

Important: MATCH_PARENT is not recommended for widgets contained in a ConstraintLayout. Similar behavior can be defined by using MATCH_CONSTRAINT with the corresponding left/right or top/bottom constraints being set to "parent"


You can check your Adapter.

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

I had a same problem like you when I used 1. You can try 2.

참고URL : https://stackoverflow.com/questions/37603751/set-width-to-match-constraints-in-constraintlayout

반응형