在一项活动中,我添加了一个水平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();
答案 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());