2013-09-28 9 views
22

पदानुक्रम काम नहीं करता है इस तरह है:एंड्रॉयड में प्रोग्राम के रूप में LinearLayout जोड़ना

  • RelativeLayout
    • LinearLayout (ऊर्ध्वाधर)
      • FrameLayout (वजन 5)
        • imageView
      • देखें (वजन 1)

देखें सिर्फ उद्देश्य रिक्ति के लिए एक डमी दृश्य है। मैंने इसे लेआउट xml में किया और यह काम करता है। लेकिन जब मैं इसे प्रोग्रामेटिक रूप से करना चाहता हूं, तो निम्न कोड काम नहीं करते हैं।

LinearLayout LL = new LinearLayout(this); 
ImageView ladder = new ImageView(this); 
FrameLayout ladderFL = new FrameLayout(this); 
View dummyView = new View(this); 
ladder.setImageResource(R.drawable.ladder1); 
LL.setOrientation(LinearLayout.VERTICAL); 
LayoutParams LLParams = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT); 
LinearLayout.LayoutParams ladderFLParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, 0); 
ladderFLParams.weight = 5f; 
LinearLayout.LayoutParams dummyParams = new LinearLayout.LayoutParams(0,0); 
dummyParams.weight = 1f; 

FrameLayout.LayoutParams ladderParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM); 
ladder.setLayoutParams(ladderParams); 
ladderFL.setLayoutParams(ladderFLParams); 
dummyView.setLayoutParams(dummyParams); 
LL.setWeightSum(6f); 
LL.setLayoutParams(LLParams); 

ladderFL.addView(ladder); 
LL.addView(ladderFL); 
LL.addView(dummyView); 
((RelativeLayout) findViewById(R.id.screenRL)).addView(LL); 

उत्तर

58
LinearLayout LL = new LinearLayout(this); 
    LL.setBackgroundColor(Color.CYAN); 
    LL.setOrientation(LinearLayout.VERTICAL); 

    LayoutParams LLParams = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT); 

    LL.setWeightSum(6f); 
    LL.setLayoutParams(LLParams); 


    ImageView ladder = new ImageView(this); 
    ladder.setImageResource(R.drawable.ic_launcher); 

    FrameLayout.LayoutParams ladderParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM); 
    ladder.setLayoutParams(ladderParams); 

    FrameLayout ladderFL = new FrameLayout(this); 
    LinearLayout.LayoutParams ladderFLParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, 0); 
    ladderFLParams.weight = 5f; 
    ladderFL.setLayoutParams(ladderFLParams);  
    ladderFL.setBackgroundColor(Color.GREEN); 
    View dummyView = new View(this); 

    LinearLayout.LayoutParams dummyParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,0); 
    dummyParams.weight = 1f; 
    dummyView.setLayoutParams(dummyParams); 
    dummyView.setBackgroundColor(Color.RED); 



    ladderFL.addView(ladder); 
    LL.addView(ladderFL); 
    LL.addView(dummyView); 
    RelativeLayout rl=((RelativeLayout) findViewById(R.id.screenRL)); 
    rl.addView(LL); 

मैं सिर्फ बेहतर समझ के लिए अपने कोड की व्यवस्था की है, यह भी रूप में मैं जानता हूँ कि आप क्या चाहते हैं, आप इसे माध्यम से जा सकते हैं न स्पष्ट तस्वीर प्राप्त करने के लिए एक पृष्ठभूमि रंग दे दी है। मुझे आशा है कि यह सहायक होगा। आपको अपना काम करने वाला एक्सएमएल प्रदान करना चाहिए ताकि हम जान सकें कि आप क्या चाहते हैं।

+0

मुझे नहीं पता कि आपके कोड क्यों काम करते हैं, मैंने उन रंगों को भी हटा दिया। शायद कोड की मेरी व्यवस्था के साथ समस्या है। वैसे भी, धन्यवाद! – Tommy

+1

@ पियुष गुप्ता: स्क्रीनआरएल क्या दर्शाता है? –

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