2012-03-17 27 views
1

我希望創建一個UI,它最初具有一個按鈕,點擊該按鈕時,在屏幕頂部添加一個TextView和EditText(放置在單獨的XML文件中用於充氣),同時按鈕移動到EditText下方。再次單擊該按鈕將在另一個TextView和EditText下方添加另一個TextView和EditText,然後再次按下按鈕(有點像我們如何通過按下小綠色的'+'圖標向Android中的聯繫人添加新號碼)。android中的動態UI:如何添加文本字段和編輯正確位置的文本?

我已經能夠從程序中膨脹TextView和EditView,但所有視圖的位置都不正確:我得到了TextView和EditText,但按鈕在點擊時消失。我將不勝感激一些示例代碼,它顯示瞭如何執行類似於我所描述的操作。

回答

0

這基本上與LayoutParams有一些樂趣。

爲了使它更容易,你應該繼續並創建幾個項目,類似於你想要的在eclipse可視化開發區域爲xml佈局。這將有助於您更好地瞭解製作某種外觀所需的屬性。

考慮到這些屬性,您可以繼續並將它們翻譯成將動態添加它的代碼。

這實質上是基本的方法: 1.轉到您的xml佈局,並添加一些文本字段和/或編輯文本到您喜歡的偏好,就好像您是手機一樣,並且用戶正按下添加這些按鈕所需的按鈕動態查看。

  1. 看看你調整屬性來獲取具體看

  2. 這是基本的編碼方法對所有這一切:

在這裏,我將告訴你如何添加TextView到ViewGroup

LayoutParams.LAYOUT_TYPE_HOLDING_THE_VIEW_YOU_WILL_ADD lp = 
new LayoutParams.LAYOUT_TYPE_HOLDING_THE_VIEW_YOU_WILL_ADD 
(LayoutParams.LAYOUT_TYPE_HOLDING_THE_VIEW_YOU_WILL_ADD.WRAP_CONTENT, 
LayoutParams.LAYOUT_TYPE_HOLDING_THE_VIEW_YOU_WILL_ADD.WRAP_CONTENT); 

lp.gravity = Gravity.Right; 
lp.weight = 1f; 

//And so on 
TextView tv = new TextView(Context); 
tv.setLayoutParams(lp); 

LAYOUT_HOLDING_THE_VIEW.add(tv); 

//NOTES: 
//Sometimes the program may not update these changes, so just to be safe, you can go ahead and call this method: 

LAYOUT_HOLDING_THE_VIEW.invalidate(); once you are done adding these fields. 

所以大部分時間都應該這樣做。

0

檢查下面的代碼,一旦工作正常。

final LinearLayout _layout = (LinearLayout) findViewById(R.id.totalview); 
     final LayoutInflater inflator = LayoutInflater.from(this); 
     Button b = (Button)findViewById(R.id.button1); 
     b.setOnClickListener(new OnClickListener() { 

      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       LinearLayout v = (LinearLayout)inflator.inflate(R.layout.add_view, null); 
       _layout.addView(v,0); 
      } 
     }); 
相關問題