2016-10-27 9 views
9

मुझे प्रतिबंध लेआउट पर प्रोग्राम्सैटिक रूप से दृश्य जोड़ने की समस्या है, और लेआउट के लिए आवश्यक सभी बाधाओं को सेट अप करें।प्रोग्रेमेटिक रूप से दृश्यों और बाधाओं को एक प्रतिबंध के लिए कैसे जोड़ना है?

क्या मैं इस समय है काम नहीं करता:

ConstraintLayout layout = (ConstraintLayout) findViewById(R.id.mainConstraint); 
ConstraintSet set = new ConstraintSet(); 
set.clone(layout); 

ImageView view = new ImageView(this); 
layout.addView(view,0); 
set.connect(view.getId(), ConstraintSet.TOP, layout.getId(), ConstraintSet.TOP, 60); 
set.applyTo(layout); 

imageView भी लेआउट पर प्रकट नहीं होता। सापेक्ष Layout में जोड़ने पर, यह एक आकर्षण की तरह काम करता है।

मुझे आवश्यक बाधाओं को बनाने के लिए मैं क्या कर सकता हूं, ताकि मेरा लेआउट फिर से काम कर सके?

उत्तर

19

मुझे लगता है कि आपको अपना ImageView जोड़ने के बाद लेआउट क्लोन करना चाहिए।

ConstraintLayout layout = (ConstraintLayout)fndViewById(R.id.mainConstraint); 
ConstraintSet set = new ConstraintSet(); 

ImageView view = new ImageView(this); 
layout.addView(view,0); 
set.clone(layout); 
set.connect(view.getId(), ConstraintSet.TOP, layout.getId(), ConstraintSet.TOP, 60); 
set.applyTo(layout); 
+4

यह क्यों काम करता है? कुछ स्पष्टीकरण की सराहना की जाएगी। धन्यवाद! –

+3

@YonahKarp आप पहले सेट में क्लोन करने से पहले सभी बच्चों को बाधा लेआउट में जोड़ रहे हैं, इसलिए आपके द्वारा जोड़े गए सभी विचार शामिल हैं। मैं यह इंगित करना चाहता हूं कि आपको अपना आईडी प्रोग्रामेटिक रूप से सेट करने की आवश्यकता है, अन्यथा सभी getId() s वापस आ जाएंगे -1 –

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