0

在一个活动中,我添加了一个水平滚动视图。这包含一个“添加新集合”按钮和所有以前添加的集合作为按钮。这些 Sets 保存在 SQLLite 数据库中。

在我的应用程序的开头,我从数据库中加载所有集合。对于每个 Set,我将自己的 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();
4

2 回答 2

0

它们的大小不同,因为动态按钮也使用 wrap_content。如果您希望它们具有相同的大小,您可以在新按钮的布局参数中使用按钮“id/btn_NewSet”的宽度和高度属性

于 2013-03-20T15:39:25.720 回答
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());
于 2016-05-18T20:13:50.053 回答