खेल के लिए थोड़ा देर हो चुकी है, लेकिन आपको मूल रूप से अपने विचारों को एक बाधा लेआउट में नियमित रूप से देखना चाहिए क्योंकि नियमित रूप से उनके स्वयं के लेआउटपैम हैं।
ConstraintLayout मामले में, प्रलेखन यहाँ स्थित है: https://developer.android.com/reference/android/support/constraint/ConstraintLayout.LayoutParams.html
इस वर्ग को निर्दिष्ट किसी दृश्य का एक ConstraintLayout अंदर बाहर रखी होना चाहते हैं अलग-अलग विशेषताओं में शामिल है। रनटाइमसेट का उपयोग करके रनटाइम पर बाधाओं का निर्माण करने की सिफारिश की जाती है।
तो, की सिफारिश की विधि एक ConstraintSet उपयोग करने के लिए है।
वहाँ वहाँ एक अच्छा कोड नमूना है, लेकिन मूल अवधारणा आप (कॉपी/क्लोनिंग/नई आदि द्वारा) एक नया सेट बनाने की जरूरत है, उसके गुण निर्धारित करते हैं, और उसके बाद अपने लेआउट में इसे लागू।
उदाहरण के लिए: मान लीजिए कि आपके लेआउट एक ConstraintLayout (यहाँ mConstraintLayout कहा जाता है) होता है और अंदर यह एक दृश्य (नमूने में R.id.go_button) शामिल हैं, तुम कर सकते हो:
ConstraintSet set = new ConstraintSet();
// You may want (optional) to start with the existing constraint,
// so uncomment this.
// set.clone(mConstraintLayout);
// Resize to 100dp
set.constrainHeight(R.id.go_button, (int)(100 * density));
set.constrainWidth(R.id.go_button, (int)(100 * density));
// center horizontally in the container
set.centerHorizontally(R.id.go_button, R.id.rootLayout);
// pin to the bottom of the container
set.connect(R.id.go_button, BOTTOM, R.id.rootLayout, BOTTOM, 8);
// Apply the changes
set.applyTo(mConstraintLayout);
// this is my… (ConstraintLayout) findViewById(R.id.rootLayout);
स्रोत
2016-10-13 18:53:00
क्यों आप यह कर नहीं होगा एक्सएमएल का उपयोग कर? – Zoe
लोग इस प्रोग्रामेटिक रूप से ऐसा क्यों करना चाहते हैं, उदाहरण के लिए, लोग ऐसे ऐप्स के अलावा पुस्तकालयों का विकास कर रहे हैं जिनके पास प्री-डिफ़ाइंड यूई है, या लोगों को रनटाइम पर उपयोगकर्ता इंटरैक्शन से प्रभावित लेआउट विनिर्देशों और यहां तक कि और भी कारणों को बदलने की आवश्यकता है। .. Google को वास्तव में इस नई सुविधा – yongsunCN
पर दस्तावेज़ों की कमी है, एक अन्य (सरल) कारण, @ Polarbear0106 यह है कि यदि आपको TransitionManager और विशेष रूप से 'TransitionManager.beginDelayedTransition (root) का उपयोग करने की आवश्यकता है, तो फिर आप अपने लेआउट परिवर्तन मैन्युअल रूप से निर्दिष्ट करने के लिए _need_ वे अगले पास में गाया जाता है। तो, हाँ, ऐसे समय होते हैं जब आपको प्रोग्राम को सामग्री को संशोधित करने की आवश्यकता होती है। –