2014-10-02 126 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