Android:在Scrollview中添加按钮的大小不正确

时间:2013-03-20 15:18:50

标签: android button dynamic scrollview

在一项活动中,我添加了一个水平Scrollview。这包含一个“添加新设置”按钮和所有以前添加的设置为按钮。这些设置保存在SQLLite数据库中。

在我的应用程序的开头,我从数据库加载所有集。对于每个Set,我在scrollview中添加一个自己的Button。

显示所有按钮,但动态添加的按钮尺寸不正确。它们应具有与“添加新设置”按钮相同的高度和宽度。

如何将第一个按钮的尺寸复制到其他按钮?

这是我的XML:

<HorizontalScrollView
    android:id="@+id/horizontalScrollView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" >

    <LinearLayout
        android:id="@+id/innerLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn_NewSet"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:height="100dp"
            android:onClick="OnExitClick"
            android:text="@string/New_Set"
            android:width="100dp" />

    </LinearLayout>
</HorizontalScrollView>

这是我的Java代码:

 db.open();
 Cursor allSets = db.getAllSets();
 if (allSets.moveToFirst())
 {
    Button bDummy = (Button) findViewById(R.id.btn_NewSet);
    LinearLayout innerLayout = (LinearLayout) findViewById(R.id.innerLayout);
    do 
    {
          Button b1 = new Button(this);
          b1.setHeight(bDummy.getHeight());
          b1.setWidth(bDummy.getWidth());
          b1.setText(allSets.getString(1));
          b1.setLayoutParams(new LinearLayout.LayoutParams(
              LinearLayout.LayoutParams.WRAP_CONTENT,
              LinearLayout.LayoutParams.WRAP_CONTENT
              ));                   
          innerLayout.addView(b1);

    }while (allSets.moveToNext());
 }
 db.close();

2 个答案:

答案 0 :(得分:0)

它们的大小不同,因为动态按钮也使用wrap_content。如果你想要它们相同的大小,你可以在新按钮的layoutparams中使用按钮“id / btn_NewSet”的width和height属性

答案 1 :(得分:0)

你应该尝试使用动态视图通胀:

1)制作一个专用的xml(例如mybutton.xml):

<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/btn_NewSet"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:height="100dp"
        android:text="@string/New_Set"
        android:width="100dp" />

2)充气并将其动态附加到innerLayout

    LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    LinearLayout innerLayout = (LinearLayout) findViewById(R.id.innerLayout);
    do 
    {
        Button b1 = (Button)inflater.inflate(R.layout.mybutton,null);
        b1.setText(allSets.getString(1));
        innerLayout.addView(b1);
    }while (allSets.moveToNext());