Soru ConstraintLayout'taki kısıtlamaları eşleştirmek için genişliği ayarlayın


Bir Görünüm'ün sol ve sağ taraflarını ana görünümün kenar boşluklarıyla sınırlamak ve ayrılan alanı doldurmak istiyorum. Ancak, genişliğini ya match_parent veya wrap_content aynı sonucu üretiyor gibi görünüyor.

Match_constraints'e eşdeğer bir eşleşme var mı (match_parent ve wrap_content öğelerinin aksine)? Yap match_parent ve wrap_content düzeni etkiler mi yoksa yeni kısıtlama düzeninde göz ardı ediliyor mu?

Favori platformum için bu yeni yerleşim sistemini sevdim!


51
2018-06-02 23:32


Menşei


Niye ya match_parent senin için çalışmıyor mu? - Eugen Martynov
düzenlenmiş soru - KG6ZVP


Cevaplar:


match_parent desteklenmiyor. İle 0dpKısıtlamalarınızı 'geriye kalanları doldurmak' yerine 'ölçeklenebilir' olarak düşünebilirsiniz.

Ayrıca, 0dp bir pozisyon tarafından tanımlanabilir match_parent pozisyonu için ebeveynine dayanır (x, y ve width, height)


57
2017-07-05 18:33



bu neden kabul edildi? match_parent kısıtlama düzeni tarafından desteklenmiyor. Ve bu cevap onu uygulamada hiçbir yol vermez. - Daniele Segato
match_parent desteklenmiyor. - Nicolas Roard
Bu cevap doğru. Açıkça match_parent desteklenmediğini belirtir. Ayrıca, 'match_parent' ayarına makul bir alternatif yapmak için, 0dp sol ve sağdaki ebeveynlere ayarlanmış kısıtlamalarla (kenar boşluğu 0 veya seçmek için seçim) aynı sonucu verecektir. Arieck'in cevabında yer alan bu cevapta gerçekten bırakılan tek şey, her iki tarafa da (ya da dikey için üst ve alt) kısıtlamalar koyma gereğidir. Ben böyle yaparım ve herhangi bir sorunum olmadı. Ayrıca diğer bileşenlerle birlikte kullanıldığında ağırlık ayarı olarak çalışır. - Tequilaman
Birisi işe yaramazsa bunun cevabını aramaya gelirse. Görünüşe göre betada kırılmış. 1.0.2'de çalışıyor gibi görünüyor. Ders öğrendim - kütüphaneleri dondurun, fırsatçı güncellemeleri kullanmayın. - inteist


match_parent Müsade edilmez. Ancak, genişlik ve yüksekliği 0dp'ye ayarlayabilir ve "üst" olarak üst ve alt veya sol ve sağ kısıtlamalarını ayarlayabilirsiniz.

Yani örneğin match_parent elemanın genişliği üzerinde kısıtlama, bunu aşağıdaki gibi yapabilirsiniz:

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

123
2017-10-26 12:23



Bu en iyi cevap olarak işaretlenmelidir. - DaveNOTDavid
Bu cevaba katılıyorum. Çok anlaşılabilir - codely
Android ekibi "match_parent" çalışması yapmalıdır. Bu son derece kolay olurdu. Basitçe match_parent uygulamasını, uygulamanın ebeveynin başlatılması ve sonlandırılmasıyla sınırlı olması gibi aynı işlevleri sağlayın. Dikey veya yatay olarak tespit etmek kolay olurdu. - bharv14
Sen en iyisin. Teşekkürler ! - gabin
Ama 0dp iki katına çıkmıyor mu? - Pramod Garg


Görünüşe göre match_parent şudur:

  • TAMAM DEĞİL doğrudan görüntüleme için ConstraintLayout
  • tamam doğrudan altındaki görünümlerin iç içe geçmiş görünümleri için ConstraintLayout

Bu şekilde işlev görebilmek için görüşlerinize ihtiyacınız varsa match_parent, sonra:

  1. Doğrudan çocuk arasında ConstraintLayout kullanmalı 0dp
  2. İç içe geçmiş elemanlar  (örneğin, torun ConstraintLayout'a) kullanabilirsiniz match_parent

Örnek:

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

18
2018-02-18 01:26



Bir ConstraintLayout içine yerleştirilmiş bir ConstraintLayout hakkında, örneğinizde TextInputLayout öğesini ConstraintLayout olarak değiştirin. - superuser


match_parent tarafından desteklenmiyor ConstraintLayout. Genişliğini 0dp kısıtlamaları eşleştirmesine izin vermek.


9
2018-06-03 07:04



ve wrap_content destekleniyor mu? - KG6ZVP
Evet, anlatabildiğim kadarıyla. - Marcin Koziński
wrap_content destekleniyor - Romain Guy


İtibaren resmi belge:

Önemli: MATCH_PARENT, içinde bulunan widget'lar için önerilmez.   ConstraintLayout. Benzer davranış, kullanarak tanımlanabilir   İlgili sol / sağ veya üst / alt ile MATCH_CONSTRAINT   "ana" olarak ayarlanmış kısıtlamalar.

Eğer elde etmek istiyorsanız MATCH_PARENT etkisi, bunu yapabilirsiniz:

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

4
2017-12-03 13:48





View_parent olarak görünümünüzü doğrudan yapmak için mümkün değil, fakat bunu biraz farklı bir şekilde yapabiliriz, ancak RTL desteğini kullanırsanız coz Start ve End ile sol ve sağ özelliğini kullanmayı unutma, bu ihtiyaç olacaktır.

    <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
2017-09-19 04:55





0dp'ye genişlik veya yükseklik ayarlaması (ebeveynle eşleşmesi gereken her şey) ve eşleşme olarak hareket etmek için sol, sağ, üst, alt kenar boşluklarını ayarlama


1
2018-04-18 07:37





ofiste doktor: https://developer.android.com/reference/android/support/constraint/ConstraintLayout

Bir boyut MATCH_CONSTRAINT olarak ayarlandığında, varsayılan davranış, elde edilen boyutun tüm kullanılabilir alanı almasıdır.

"MATCH_CONSTRAINT" eşdeğeri olan 0dp'yi kullanma

Önemli: Bir ConstraintLayout'ta bulunan widget'lar için MATCH_PARENT önerilmez. Benzer davranış MATCH_CONSTRAINT kullanılarak "sol" olarak ayarlanmış ilgili sol / sağ veya üst / alt kısıtlamaları kullanılarak tanımlanabilir.


1
2018-06-24 13:51