2017-05-20 6 views
16

क्या कोई जानता है कि बाधा लेआउट 1.1, अर्थात् बाधाओं और प्रतिशत-आधारित आयामों में नई सुविधाओं का उपयोग कैसे करें? बिल्कुल ऑनलाइन कोई दस्तावेज उपलब्ध नहीं है, और डिजाइनर टूल्स पर हाल ही में Google I/O बात केवल विवरणधारकों में विस्तार से कवर की गई है। बीटीडब्ल्यू, मैंने पाया कि समूहों का उपयोग कैसे करें, जो एक नई सुविधा भी हैं। constraint_referenced_ids एक स्ट्रिंग है, जहां आप विचारों का अल्पविराम से अलग आईडी करके बताना चाहिए कि यदि आप इस समूह के साथ जुड़े होने के लिए चाहते है: आप बस अपनी बाधा लेआउट, जहां एप्लिकेशन कोबाधा लेआउट 1.1 में नई सुविधाओं का उपयोग कैसे करें?

<android.support.constraint.Group 
    app:constraint_referenced_ids="button1, button2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/> 

जोड़ने की जरूरत है। अब, समूह की दृश्यता को टॉगल करना इसके संदर्भ में सभी विचारों की दृश्यता को बदलता है, जो मुझे लगता है कि इस सुविधा का मुख्य उद्देश्य अभी है।

+2

साथ सरकारी डॉक्स चयनित दृश्य के लिए समूह बनाने के लिए एक शॉर्टकट है। यह स्वचालित रूप से सभी आईडी को शामिल करने के तरीके में शामिल करेगा। आपको इसे आजमाना चाहिए। प्रतिशत के लिए भी 3 नए विशेषताएं हैं (बस "ऐप: प्रति" टाइप करें और एंड्रॉइड स्टूडियो संकेत देखें)। – Ekalips

+0

धन्यवाद! मैं इसे देख लूँगा। – Roman

उत्तर

22

Documentation नई सुविधाओं पर बहुत ही दुर्लभ था जब इस सवाल को पहले पूछा गया था। सबसे अच्छा जो मैं पा सकता था this Reddit post में था! लेकिन वहां की जानकारी ने मुझे क्षैतिज बाधा के साथ एक बाधा लेआउट बनाने के लिए पर्याप्त संकेत दिए। यह वास्तव में काम करता था, और नए (बीटा) बाधा लेआउट ने wrap_content के साथ कुछ बुरी समस्याओं को भी ठीक किया। कॉन्स्ट्रेंट लेआउट बीटा का मेरा बहुत सकारात्मक पहला प्रभाव कई अतिरिक्त परीक्षणों के तहत आयोजित किया गया है।

बाधा लेआउट बीटा 3 ने एक रोमांचक नई सुविधा पेश की: एक बाधा सर्कल और कोण पैरामीटर का उपयोग करके विजेट की परिपत्र स्थिति। Constraint Layout Beta 4 कुछ अतिरिक्त फ़िक्स प्रदान करता है, और यहां तक ​​कि some official documentation भी उपलब्ध है!

नई सामग्री का उपयोग करने से पहले, परियोजना में बीटा बाधा लेआउट जोड़ें।

एप्लिकेशन/build.gradle में, यह करने के लिए बाधा लेआउट निर्भरता बदलने के लिए:

compile 'com.android.support.constraint:constraint-layout:1.1.0-beta5'

तुम भी (अपने प्रोजेक्ट की build.gradle को Maven भंडार जोड़ना है जो जरूरत हो सकती है आपकी परियोजना की मूल निर्देशिका में एक अलग फ़ाइल)। मज़ा सामान के लिए अब

allprojects { 
    repositories { 
     jcenter() 
     maven { url 'https://maven.google.com' } 
    } 
} 

: allprojects खजाने के लिए देखो अनुभाग और इस जोड़ें: maven { url 'https://maven.google.com' } तो पूरे अनुभाग कुछ इस तरह देखना चाहिए! निम्न स्निपेट क्षैतिज बाधा बनाता है, ताकि bottom_textviewincluded_layout और multiline_textview दोनों से नीचे हो।

<android.support.constraint.Barrier 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/barrier1" 
    app:barrierDirection="bottom" 
    app:constraint_referenced_ids="included_layout, multiline_textview" /> 

<TextView 
    android:id="@+id/bottom_textview" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toBottomOf="@+id/barrier1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" /> 

पहली छाप: बाधाएं बहुत अच्छी हैं! मेरा नया लेआउट चापलूसी और सरल है, और अभी भी वही करना है जो मैं चाहता हूं। यह निश्चित रूप से कोशिश करने लायक है।

अधिक विस्तृत प्रलेखन धीरे-धीरे उपलब्ध होता जा रहा है:

@Vyacheslav एक के जवाब भी नई सुविधाओं क्या कर सकते हैं का एक बड़ा सारांश है।

+0

जानकारी के लिए धन्यवाद! – Roman

+0

इस पोस्ट को अद्यतन रखने के लिए बहुत बहुत धन्यवाद! layout_constraintLeft_toLeftOf = "जनक" ' ' एप्लिकेशन: – Piotr99

+0

हम वास्तव में उन पंक्तियों, उदाहरण में याद कर रहे हैं 'एप्लिकेशन की ज़रूरत है layout_constraintRight_toRightOf =" जनक "' 'एप्लिकेशन: layout_constraintTop_toBottomOf =" @ + id/multiline_textview "' – Lemberg

2

बैरियर here पर कुछ जानकारी है।

+4

संभावित समाधान का एक लिंक हमेशा स्वागत है, लेकिन कृपया लिंक के चारों ओर संदर्भ जोड़ें ताकि आपके साथी उपयोगकर्ताओं को कुछ पता चल जाएगा कि यह क्या है और यह क्यों है। यदि लक्षित साइट पहुंच योग्य नहीं है या स्थायी रूप से ऑफलाइन हो जाती है, तो हमेशा एक महत्वपूर्ण लिंक के सबसे प्रासंगिक भाग को उद्धृत करें। एक नज़र डालें [क्यों और कैसे कुछ उत्तरों हटा दिए गए हैं?] (Https://stackoverflow.com/help/deleted-answers) और [मैं एक अच्छा उत्तर कैसे लिखूं?] (Https://stackoverflow.com/help/कैसे करने वाली जवाब) – Gary99

13

1. प्रतिशत आयाम

चौड़ाई 0dp (या match_constraint) के विगेट्स के डिफ़ॉल्ट व्यवहार को फैला हुआ है (layout_constraintWidth_default संपत्ति के माध्यम से विन्यास)। ConstraintLayout 1.0.x में, हमारे पास इसे लपेटने के लिए बदलने का विकल्प था, और 1.1.x में, हमारे पास एक नया मान, प्रतिशत है, जो हमें उपलब्ध स्थान का कुछ प्रतिशत लेने के लिए विजेट सेट करने की अनुमति देता है।

<!-- the widget will take 40% of the available space --> 
    app:layout_constraintWidth_default="percent" 
    app:layout_constraintWidth_percent="0.4" 

2. बाधाओं

इस नए विजेट से, हम ConstraintLayout.com से कुछ उदाहरण है। बैरियर बाईपास को बाईपास करने के लिए एक या अधिक विजेट से बचेंगे। जब ऐसा होता है, बैरियर स्वयं को स्थानांतरित कर देगा, और ऊपर दिए जाने वाले विजेट (ओं) से परहेज करेगा। नीचे दिए गए उदाहरण में, टेक्स्ट 1 और टेक्स्ट 2 की अंतिम संपत्ति बैरियर को बाईपास नहीं कर सकती है। जब ऐसा होता है, तो बैरियर स्वयं को दाईं ओर ले जायेगा (या बाईं तरफ, यदि आरटीएल लेआउट में हो)। कुछ विन्यास या अंतर्राष्ट्रीयकरण के आधार पर, विभिन्न विजेट आकारों से निपटने के दौरान यह कणपूर्ण मुट्ठी भर है।

<android.support.constraint.ConstraintLayout...> 
    <TextView 
    android:id=”@+id/text1" ... /> 
    <TextView 
    android:id=”@+id/text2" ... /> 
    <android.support.constraint.Barrier 
    android:id=”@+id/barrier” 
    android:layout_width=”wrap_content” 
    android:layout_height=”wrap_content” 
    app:barrierDirection=”end” <!-- start, top, bottom, right... --> 
    app:constraint_referenced_ids=”text1,text2" /> 
    <TextView 
    android:id=”@+id/text3" 
    ... 
    app:layout_constraintStart_toEndOf=”@+id/barrier” /> 
</android.support.constraint.ConstraintLayout> 

3. समूह

समूह, दिशा-निर्देश की तरह, आकार 0. साथ विगेट्स हैं लेकिन समूह विगेट्स का एक सेट करने के लिए कुछ कार्रवाई लागू करने के लिए मदद करता है। सबसे आम मामला, विगेट्स के संग्रह की दृश्यता को नियंत्रित करना है। इस परिदृश्य से निपटने के दौरान, सबसे आम समाधान स्वयं को गतिविधि या टुकड़े के अंदर विचारों या दृश्यों के सेट को बनाए रखना था, या यहां तक ​​कि व्यू ग्रुप जोड़ना और कंटेनर की दृश्यता को नियंत्रित करने के अंदर सभी विचारों को अंदर रखना था। अब, आपको केवल समूह में अपनी आईडी जोड़ने की ज़रूरत है, और समूह सभी प्लग किए गए दृश्यों को क्रियाओं का प्रचार करेगा।

<android.support.constraint.ConstraintLayout ...> 
    <TextView 
    android:id=”@+id/text1" ... /> 
    <TextView 
    android:id=”@+id/text2" ... /> 
    <android.support.constraint.Group 
    android:id=”@+id/group” 
    ... 
    app:constraint_referenced_ids=”text1,text2" /> 
</android.support.constraint.ConstraintLayout> 

इस मामले में, अगर हम

group.setVisibility(View.GONE); 

फोन तो टेक्स्ट 1 और टेक्स्ट 2 दृश्यता चला प्राप्त होगा।

मूल text here

description here.

संबंधित मुद्दे