2012-02-01 16 views
5

मेरे पास लंबाई एन की एक सरणी है, अब मुझे लाइनरलाइट्स की संख्या बनाने और उनमें से प्रत्येक पर अलग-अलग सामान जोड़ने की आवश्यकता है। यह गतिशील रूप से कैसे किया जा सकता है?Android पर LinearLayout को गतिशील रूप से कैसे जोड़ें?

उत्तर

4
LinearLayout lLayour = new LinearLayout(context); 
parentWidget.addView(lLayout); 
+0

और कहीं वहां आप अपनी सभी संपत्तियों को असाइन करते हैं (माना जाता है कि आपको डिफ़ॉल्ट के अलावा कुछ और चाहिए)। – jwatts1980

+0

आप बच्चे LinearLayout के लिए लेआउट पैराम्स भी सेट कर सकते हैं। lLayout.setLayoutPatams (लेआउट पैराम्स), – ihrupin

+0

@ihrupin parentWidget कैसे प्राप्त करें? मैं एक कक्षा के एक क्रिएट विधि के अंदर हूं जो गतिविधि वर्ग को विरासत में लेता है और दृश्य सेट है CONTContentView (R.layout.someLayout) –

4

सबसे आसान तरीका है एक्सएमएल में एक प्रारूप का बना सकते हैं और

LayoutInflater.from(context).inflate(R.layout.my_linear_layout);

उपयोग करते समय भी अपने जोड़े गए विचारों setId() ताकि आप उन्हें बाद में आसानी से उपयोग कर सकते हैं चाहते हो सकता है यह बढ़ रहा है।

2

मैंने इसे रिलेवेटिवआउट का उपयोग करके हल किया जिसे मुझे काम करने में थोड़ा आसान मिला। हां, जैसा कि ऊपर बताया गया है, मैंने setId() का उपयोग किया। यहां कोड लागू किया गया है:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    ScrollView sv = new ScrollView(this); 

    //Parent RelativeLayout 
    parentLayout = new RelativeLayout(this); 
    parentLayout.setBackgroundColor(Color.WHITE); 
    params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    parentLayout.setLayoutParams(params); 
    sv.addView(parentLayout); 

    final String[] comList = getCommunication(); 
    int listLength=0; 
    try{ 
    listLength= comList.length/3; 
    }catch(Exception e){System.out.println(e);System.exit(0);} 

    childLayout= new RelativeLayout[listLength] ; 
    TextView[] tvName = new TextView[listLength]; 
    TextView[] tvDate =new TextView[listLength]; 
    TextView[] tvMsg =new TextView[listLength]; 

    for(int i =0;i<listLength;i++){ 
     try{ 

     childLayout[i] = new RelativeLayout(this); 
     childLayout[i].setPadding(5, 5, 5, 5); 
     params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, 75); 
     if(i==0){params.addRule(RelativeLayout.BELOW);} 
     else{params.addRule(RelativeLayout.BELOW,i);} 
     childLayout[i].setId(i+1); 
     childLayout[i].setClickable(true); 
     childLayout[i].setLayoutParams(params); 
     childLayout[i].setOnClickListener(new OnClickListener(){ 
      @Override 
      public void onClick(View v) { 


       //Create the intent 
        Intent i = new Intent("ACTIIVTY"); 
        startActivity(i); 
      }  
     }); 

     tvName[i] = new TextView(this); 
     params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     params.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 
     tvName[i].setLayoutParams(params); 
     childLayout[i].addView(tvName[i]); 
     if(comList[i*3].length()>24){ 
      String name = comList[i*3].substring(0,24)+"..."; 
      tvName[i].setText(name); 
     }else{ 
      tvName[i].setText(comList[i*3]); 
     } 
     tvName[i].setId(listLength+1+i); 
     tvName[i].setTextSize(12); 
     tvName[i].setTextColor(Color.BLACK); 

     tvDate[i] = new TextView(this); 
     params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
     tvDate[i].setLayoutParams(params); 
     childLayout[i].addView(tvDate[i]); 
     tvDate[i].setTextSize(11); 
     tvDate[i].setTextColor(Color.BLUE); 
     tvDate[i].setText(comList[i*3+1]); 


     tvMsg[i] = new TextView(this); 
     params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     params.addRule(RelativeLayout.BELOW, listLength+1+i); 
     tvMsg[i].setLayoutParams(params); 
     childLayout[i].addView(tvMsg[i]); 
     tvMsg[i].setTextSize(11); 
     tvMsg[i].setTextColor(Color.GRAY); 
     if(comList[i*3+2].length()>96){ 
      String msg = comList[i*3+2].substring(0,96)+"..."; 
      tvMsg[i].setText(msg); 
     }else{ 
      tvMsg[i].setText(comList[i*3+2]); 
     } 

     parentLayout.addView(childLayout[i]); 

     }catch(Exception e){System.out.println("Errrorrrrr");} 
    } 

    setContentView(sv); 
} 
संबंधित मुद्दे