1

我正在尝试在运行时在我的 TableRow 中添加一些按钮。我的 TableRow 有这样的结构:

    <TableRow 
            android:layout_marginTop="100px" 
            android:gravity="bottom" 
            android:paddingTop="50px" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:id="@+id/riga1">

            <Button 
                android:textSize="32px" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content" 
                android:id="@+id/buttonOK2" 
                android:text="YES"
                android:onClick="setResult"/>
        </TableRow>

我的java代码是:

TableRow tr = (TableRow) findViewById(R.id.riga1);
        Button b = new Button(this);  
        b.setText("button 1");  
        b.setId(1);
        b.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));   
        tr.addView(b);

        Button b1 = new Button(this);  
        b1.setText("button 2");  
        b1.setId(2);
        b1.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));   
        tr.addView(b1);

但这似乎行不通。在我的活动中,我只能看到 xml 文件中定义的按钮。

另一个问题是,如果我在相关的 TableLayout 中设置参数:

android:stretchColumns="*" 

我必须在上述 TableLayout 的 TableRow 中插入(在 xml 文件中)至少一个按钮,否则我会在 streatchColumns 附近获得“除以零错误”我该怎么办才能让 tableRow 为空?

4

3 回答 3

1

我认为你的问题是你LayoutParams为你的 s 使用了错误的对象TextView试试这个:

 TableRow.LayoutParams layoutParams = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.MATCH_PARENT); 

然后设置这个layoutParams对象:

 b.setLayoutParams(layoutParams);
于 2013-04-04T12:05:32.520 回答
0

你应该使用相对布局而不是表格布局,这对我有用,试试吧

在你的 XML 文件中像这样

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/myMainRelativeLayout"
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" >

<Button
    android:id="@+id/btnAdd"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="47dp"
    android:text="Add Button" />

你的java代码如下

public class MainActivity extends Activity implements
    android.view.View.OnClickListener {

Button btnAdd;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btnAdd = (Button) findViewById(R.id.btnAdd);
    btnAdd.setOnClickListener(this);

}

@Override
public void onClick(View v) {
    if (v.getId() == R.id.btnAdd) {
        RelativeLayout rl = (RelativeLayout)findViewById(R.id.myMainRelativeLayout);
        Button btn = new Button(this);
        btn.setId(1234);
        btn.setText("Add Button Runtime");
        btn.setOnClickListener(this);
        rl.addView(btn);
    }
    if(v.getId() == 1234)
    {
        Toast.makeText(getApplicationContext(), "This is Your New Button", Toast.LENGTH_LONG).show();

    }
}

}

试试这个真的很管用

于 2014-05-11T17:36:35.377 回答
-1

首先,您需要使用此语句找到按钮

btn=(Button)findViewById(R.id.Button1);

比你可以使用这个设置可见性:

btn.setVisibility(View.INVISIBLE);

然后您可以使用以下语句设置可见性:

btn.setVisibility(View.VISIBLE);

于 2013-04-04T12:02:42.577 回答