2014-10-02 107 views
0

我想創建一個函數,它接收一組文本並創建按鈕並將它們添加到視圖中。

這是我的代碼。

它正在工作和創建按鈕,但是當我調用兩次函數時,它不會創建兩個線性佈局,它只顯示最後一個被調用,就像它正在刪除第一個一樣。

我該如何創建一個新的線性佈局並將其添加到視圖?

動態創建視圖

// Create a view 
protected boolean CreateTheButtons(String[] names) 
{ 
    try 
    { 
      LinearLayout linLayout = new LinearLayout(this); 
      linLayout.setOrientation(LinearLayout.HORIZONTAL); 
      LayoutParams linLayoutParam = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
      // set LinearLayout as a root element of the screen 
      linLayout.setWeightSum(names.length); 
      setContentView(linLayout, linLayoutParam); 

      LayoutParams lpView = new LayoutParams(0, LayoutParams.WRAP_CONTENT); 
      lpView.weight = 1; 

      for (int i = 0; i < names.length; i++) { 

      Button btn = new Button(this); 
      btn.setText(names[i]); 
      linLayout.addView(btn, lpView); 

      } 
      return true; 
    } 
    catch(Exception ex) 
    { 

     return false; 
    } 




} 
+0

爲什麼我得到一個-1的問題? – 2014-10-02 07:07:44

回答

1

這是工作和創造的按鈕,但是當我調用該函數 兩次不會創建兩個線性佈局,它只是顯示最後一個 稱爲如果刪除第一個。

你的代碼刪除第一LinearLayout源於調用該方法,因爲你使用setContentView()(這將取代活動與您作爲參數傳遞的視圖當前視圖(如果有發現))。相反,您應該刪除對setContentView()的呼叫,併爲您打算通過該方法添加的LinearLayouts插入持有人ViewGroup。

<!-- This will be the content view of the activity --> 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:id="@+id/parent" /> 

設置上面的佈局,作爲該活動的內容來看,在onCreate()方法:

setContentView(R.layout.the_layout_above); 

在您將於是,該方法有:

protected boolean CreateTheButtons(String[] names) { 
    try { 
      LinearLayout linLayout = new LinearLayout(this); 
      linLayout.setOrientation(LinearLayout.HORIZONTAL); 
      LinearLayout.LayoutParams linLayoutParam = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);    
      linLayout.setWeightSum(names.length); 
      // assuming this method is in an Activity 
      LinearLayout parent = (LinearLayout) findViewById(R.id.parent); 
      parent.addView(linLayout, linLayoutParam); 

      LayoutParams lpView = new LayoutParams(0, LayoutParams.WRAP_CONTENT); 
      lpView.weight = 1; 

      for (int i = 0; i < names.length; i++) { 

      Button btn = new Button(this); 
      btn.setText(names[i]); 
      linLayout.addView(btn, lpView); 
      } 
      return true; 
    } catch(Exception ex) { 
     return false; 
    } 

} 
+0

多數民衆贊成它......謝謝你:D乾杯 – 2014-10-02 07:40:27

+0

我有另一個問題......我實際上試圖做的是創建一個庫,在線性視圖中創建按鈕...我試圖研究如何創建一個庫,但結果沒有幫助我。 我如何做到這一點被稱爲一個函數。它可以是一個活動或它必須是一個片段? 如果你需要我打開另一個問題,我會的。 – 2014-10-02 07:42:01

+0

@DanyMinassian我不明白你在哪裏有問題?創建庫項目或添加實際代碼。對於這樣簡單的庫來說可能太多了。 – Luksprog 2014-10-02 08:17:30