2011-07-25 42 views
0

我正在开发一个Android项目,我需要在运行时将按钮添加到布局。所以,这是布局的xml:将运行时按钮添加到布局

<?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:id="@+id/layout"> 

</LinearLayout> 

而这正是活动:

import android.app.Activity; 
import android.widget.*; 
import android.widget.TableLayout.LayoutParams; 
import android.os.Bundle; 

public class PluginsActivity extends Activity{ 

    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.plugins); 

     LinearLayout layout = (LinearLayout) findViewById(R.id.layout); 
     Button butt = new Button(this); 
     Button butt2 = new Button(this); 
     butt.setText("lol"); 
     butt2.setText("lol2"); 
     butt.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 
     butt2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 
     layout.addView(butt); 
     layout.addView(butt2); 

    } 

} 

现在的问题是,当我开始活动,按钮1“涵盖”按钮2。实际上,如果我使用LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT),则会显示两个按钮。有没有办法在LinearLayout上添加“新行”?屏幕应该是这样的:


| * ** * ***Button1的* ** * ** * *** |


| * ** * ***Button2的* ** * ** * *** |


谢谢。

+0

也请改变你的'进口android.widget.TableLayout.LayoutParams;''到进口android.widget .LinearLayout.LayoutParams;'。 – inazaruk

回答

3

请在布局文件垂直您的LinearLayout的oritentation

< LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 

butt.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 
butt2.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 
+0

欢迎您 – Rasel

+0

建议在运行时添加小部件? – kebyang

1

activity_main.xml中


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/layout" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

</LinearLayout> 

//提了android:方向=“垂直”

....这是主要的问题....使其垂直,并将努力

0
Activity_Main.java 
____________________________________________________________________________ 

package com.example.dynamic; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.widget.Button; 
import android.widget.LinearLayout; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     LinearLayout layout = (LinearLayout)findViewById(R.id.layout); 

     Button b1 = new Button(this); 
     b1.setText("A"); 

     Button b2 = new Button(this); 
     b2.setText("B"); 

     Button b3 = new Button(this); 
     b3.setText("C"); 

     Button b4 = new Button(this); 
     b4.setText("D"); 

     Button b5 = new Button(this); 
     b5.setText("E"); 

     Button b6 = new Button(this); 
     b6.setText("F"); 

     layout.addView(b1); 
     layout.addView(b2); 
     layout.addView(b3); 
     layout.addView(b4); 
     layout.addView(b5); 
     layout.addView(b6); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 
相关问题