ConstraintLayout में बाधाओं का मिलान करने के लिए चौड़ाई सेट करें


97

मैं एक दृश्य के बाएँ और दाएँ पक्ष को इसके माता-पिता के मार्जिन के लिए विवश करना चाहूंगा और इसे आवंटित स्थान को भर दूंगा। हालाँकि, match_parentया तो चौड़ाई सेट करना या wrap_contentएक ही परिणाम उत्पन्न करना प्रकट होता है।

क्या match_constraints (match_parent और wra_content के विपरीत) के बराबर कुछ है? क्या match_parentऔर wrap_contentलेआउट को प्रभावित करेगा या वे नए बाधा लेआउट में अनदेखी कर रहे हैं?

मेरे पसंदीदा मंच के लिए इस नए लेआउट सिस्टम को प्यार करना!


1
match_parentआपके लिए काम क्यों नहीं करता है?
यूजेन मार्टीनोव

जवाबों:


120

match_parentसमर्थित नहीं है। इसके साथ 0dp, आप अपने अवरोधों को 'भरने वाले व्हाट्सएप' के बजाय 'स्केलेबल' के रूप में सोच सकते हैं।

इसके अलावा, 0dpएक स्थिति द्वारा परिभाषित किया जा सकता है, जहां match_parentयह माता-पिता पर निर्भर है कि यह स्थिति (x, y और चौड़ाई, ऊंचाई) के लिए है


31
यह स्वीकृत उत्तर क्यों है? Match_parent बाधा लेआउट द्वारा समर्थित नहीं है। और यह जवाब इसे लागू करने का कोई तरीका नहीं देता है।
डेनियल सेगाटो

3
match_parent समर्थित नहीं है।
निकोलस रार्ड

7
यह उत्तर सही है। यह स्पष्ट रूप से बताता है कि match_parent समर्थित नहीं है। इसके अलावा, 'match_parent' सेटिंग के लिए एक उचित विकल्प करने के लिए, बाएं और दाएं पर माता-पिता के लिए सेट की गई बाधाओं के साथ 0dp (मार्जिन 0 या सूट लेने के लिए) समान परिणाम देगा। केवल एक चीज जो वास्तव में इस उत्तर में छोड़ दी गई थी, जो एरिक के उत्तर में है, दोनों पक्षों (या ऊर्ध्वाधर के लिए ऊपर और नीचे) पर बाधाओं को स्थापित करने की आवश्यकता है। यह है कि मैं इसे कैसे करता हूं और मेरे पास कोई मुद्दा नहीं है। साथ ही यह अन्य घटकों के साथ उपयोग करने पर भार सेटिंग के रूप में काम करता है।
टेकिलमैन

अगर कोई यहां काम के लिए जवाब मांगने आता है। ऐसा लगता है कि यह बीटा में टूट गया। यह 1.0.2 में काम करने लगता है। सबक सीखा - पुस्तकालयों को फ्रीज करें, अवसरवादी अपडेट का उपयोग न करें।
पूर्णांक

1
@ Tequilaman टिप्पणी का जवाब हो सकता है। उन्होंने इसे लागू करने का तरीका सही बताया है। 0dp मार्जिन के साथ दोनों ओर एक अवरोध बनाएँ, यह चाल करता है।
उत्कर्ष मांकड़

168

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

4
Android टीम को "match_parent" कार्य करना चाहिए। यह बेहद आसान होगा। सीधे शब्दों में मैच_परेंट को वैसी ही कार्यक्षमता प्रदान करें, जैसे कि ऐप को शुरू करने और माता-पिता के अंत के लिए विवश किया गया था। ऊर्ध्वाधर या क्षैतिज रूप से पता लगाना आसान होगा।
bharv14

लेकिन 0dp दोहरे माप में परिणाम नहीं करता है?
प्रमोद गर्ग

25

जाहिर match_parentहै:

  • सीधे के तहत विचारों के लिए ठीक नहीं हैConstraintLayout
  • उन विचारों के लिए ठीक है , जो सीधे अंदर मौजूद हैंConstraintLayout

तो अगर आप के रूप में कार्य करने के लिए अपने विचारों की जरूरत है match_parent, तो:

  1. प्रत्यक्ष बच्चों का ConstraintLayoutउपयोग करना चाहिए0dp
  2. नेस्टेड तत्व (उदाहरण के लिए, कांस्ट्रेनल लियूट के लिए पोते) का उपयोग कर सकते हैं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>

एक ConstraintLayout के बारे में क्या है एक ConstraintLayout में नेस्टेड, आपके उदाहरण में TextInputLayout को एक ConstraintLayout में बदल दें?
सुपरयूजर

16

match_parentद्वारा समर्थित नहीं है ConstraintLayout। चौड़ाई निर्धारित करें 0dpताकि वह बाधाओं से मेल खा सके।


और wra_content समर्थित है?
KG6ZVP

हां, जहां तक ​​मैं बता सकता हूं।
मार्सिन कोज़ीस्की

6
wra_content समर्थित है
रोमेन गाइ

13

से आधिकारिक दस्तावेज़ :

महत्वपूर्ण: एक ConstraintLayout में शामिल विगेट्स के लिए MATCH_PARENT अनुशंसित नहीं है। इसी तरह के व्यवहार को "माता-पिता" के लिए सेट किए जा रहे संगत बाएँ / दाएँ या ऊपर / नीचे बाधाओं के साथ 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" />

4

आप अपने एडाप्टर की जांच कर सकते हैं।

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

जब मैं 1 उपयोग करता था तो आपके पास एक ही समस्या थी। आप 2 की कोशिश कर सकते हैं।


यह सोना है! धन्यवाद!
ग्रिगरोर

3

आपके विचार को मैच_परेंट के रूप में बनाना सीधे तौर पर संभव नहीं है, लेकिन हम इसे थोड़े अलग तरीके से कर सकते हैं, लेकिन स्टार्ट और एंड के साथ लेफ्ट और राईट फीचर का उपयोग करना न भूलें, यदि आप RTL सपोर्ट का उपयोग करते हैं, तो इसकी जरूरत होगी।

    <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

कार्यालय में डॉक्टर: https://developer.android.com/reference/android/support/constraint/ConstraintLayout

जब एक आयाम MATCH_CONSTRAINT पर सेट किया जाता है, तो डिफ़ॉल्ट व्यवहार के परिणामस्वरूप परिणाम सभी उपलब्ध स्थान लेते हैं।

0dp का उपयोग करना, जो "MATCH_CONSTRAINT" के बराबर है

महत्वपूर्ण: एक ConstraintLayout में शामिल विगेट्स के लिए MATCH_PARENT अनुशंसित नहीं है। इसी तरह के व्यवहार को "माता-पिता" के लिए सेट किए जा रहे संगत बाएँ / दाएँ या ऊपर / नीचे बाधाओं के साथ MATCH_CONSTRAINT का उपयोग करके परिभाषित किया जा सकता है


0

यदि आप मूल के केंद्र में TextView चाहते हैं .. तो
आपका मुख्य लेआउट बाधा लेआउट है

<androidx.appcompat.widget.AppCompatTextView
     android:layout_width="0dp"
     android:layout_height="wrap_content"
     android:text="@string/logout"
     app:layout_constraintLeft_toLeftOf="parent"
     app:layout_constraintRight_toRightOf="parent"
     android:gravity="center">
</androidx.appcompat.widget.AppCompatTextView>

0

मुझे एक और जवाब मिला जब स्क्रॉल दृश्य के अंदर एक बाधा लेआउट है तो हमें डालने की आवश्यकता है

android:fillViewport="true"

स्क्रॉल दृश्य के लिए

तथा

android:layout_height="0dp"

बाधा लेआउट में

उदाहरण:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true">

    <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="0dp">

// Rest of the views

</androidx.constraintlayout.widget.ConstraintLayout>

</ScrollView>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.