2012-01-10 37 views
0

在我的應用程序要像下面的圖片創建佈局:Android:如何創建這樣的動態佈局(不是通過xml)?

enter image description here

那麼如何可能?

我已經做了類似下面的代碼:

public void showResult() 
{ 

    List<TextView> textListWord = new ArrayList<TextView>(tempEmployerList.size()); 
    List<TextView> textListAnswer = new ArrayList<TextView>(tempEmployerList.size()); 
    List<TextView> imageListAnswer = new ArrayList<TextView>(tempEmployerList.size()); 
    for(int i = 0; i<=tempEmployerList.size()-1; i++) 
    {  
     LinearLayout innerLayout = new LinearLayout(this); 
     innerLayout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 
     innerLayout.setBackgroundColor(0x00000000); 

     // set the Multiple TextView 
     TextView mHeading = new TextView(getApplicationContext()); 
     TextView middleValue = new TextView(getApplicationContext()); 
     TextView aImageView = new TextView(getApplicationContext()); 

     mHeading.setText("\n"+"1"); 
     //mHeading.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 
     mHeading.setTextColor(0xFFFF0000); 
     mHeading.setPadding(3, 0, 0, 0); 


     middleValue.setText("\n"+"2"); 
     //middleValue.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 
     middleValue.setTextColor(0xFFFF0000); 
     middleValue.setGravity(Gravity.RIGHT); 
     middleValue.setPadding(2, 0, 9, 0); 

     aImageView.setText("\n"+"3"); 
     //aImageView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 
     aImageView.setGravity(Gravity.RIGHT); 
     aImageView.setTextColor(0xFF000000); 
     aImageView.setPadding(0, 0, 9, 0); 

     View line = new View(getApplicationContext()); 
     //line.setOrientation(1); 
     line.setLayoutParams(new LayoutParams(2, android.view.ViewGroup.LayoutParams.FILL_PARENT)); 
     line.setBackgroundColor(0xFF000000); 

     /**** Any other text view setup code ****/  

     innerLayout.addView(mHeading); 
     innerLayout.addView(middleValue); 
     innerLayout.addView(aImageView); 
     innerLayout.addView(line); 
     myLinearLayout.addView(innerLayout); 

     textListWord.add(mHeading); 
     textListAnswer.add(middleValue); 
     imageListAnswer.add(aImageView); 

    } 
} 

所以,請指導我,更重要的是我必須做的,創造這樣的看法? 謝謝。

回答

1

嘗試使用TableLayout和TableRow代替LinearLayout。

您也可以在xml中創建TableLayout,因爲它我認爲是靜態的並添加TableRows。在Java中使用的Java創建一個TableLayout,

TableLayout tblLayout=new TableLayout(this); 

表的佈局設置的LayoutParams等性能,像我設置的LayoutParams:

LayoutParams params=new LayoutParams(LayoutParams.Fill_Parent, LayoutParams.Wrap_Content); 
tblLayout.setLayoutParams(params); 

創建TableRows創建和插入一個循環:

for(int i=0;i<arrList1.size();i++) 
{ 
    TableRow row=new TableRow(this); 
    row.setLayoutParams(params); 

    TextView lbl1=new TextView(this); 
    lbl1.setText(arrList1.get(i)); 
    row.addView(lbl1); 

    TextView lbl2=new TextView(this); 
    lbl2.setText(arrList2.get(i)); 
    row.addView(lbl2); 

    TextView lbl3=new TextView(this); 
    lbl3.setText(arrList3.get(i)); 
    row.addView(lbl3); 

    tblLayout.addView(row); 
} 
+0

好的。你會用一些代碼來創建這樣的視圖嗎? – 2012-01-10 05:18:49

+0

您也可以在xml中創建TableLayout,因爲它,我認爲它是靜態的,並在創建這些表之後添加TableRows。 – jeet 2012-01-10 05:28:35

+0

好的謝謝。讓我試試看。 – 2012-01-10 05:44:08