我创建了一个database
调用的布局,其中button
将为database
内的每个项目创建buttons
。 layout_width
按照我的需要创建,我也发现了如何设置layout_height
和buttons
,但所有button
都放在相同位置并相互重叠这样只能访问最后创建的buttons
。我创建Button bt = new Button(this);
bt.setText("Button Title");
bt.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
linerLayout.addView(bt);
的代码如下所示:
bt.layout(l, t, r, b);
生成按钮后,活动看起来像这样:
我查看了可用于按钮的每种方法,但没有找到任何定义位置的方法。我只想到了以下方法:
<RelativeLayout
android:id="@+id/llActOver"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="2" >
</RelativeLayout>
但不知道如何使用它,并认为可能有一个更简单的方法来解决这个问题。知道解决方法的人吗?!
我只是尝试设置布局参数,如“陈dor”所述。我的xml文件中有一个相对布局:
Button bt = new Button(context);
bt.setText(c.getString(iDef));
fontClass.setFont(bt);
//RelativeLayout placeholder = new RelativeLayout(context);
RelativeLayout.LayoutParams layoutParam =
new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT);
if(rowCount < 1){
layoutParam.addRule(RelativeLayout.ALIGN_PARENT_TOP);
rowCount++;
}else{
layoutParam.addRule(RelativeLayout.ALIGN_PARENT_TOP, lastButtonId);
}
lastButtonId = bt.getId();
//placeholder.addView(bt, layoutParam);
linearLayout.addView(bt, layoutParam);
并将生成的按钮格式化为:
{{1}}
我在循环的末尾保存按钮id,以便在下一轮中访问最后一个按钮id。 我也尝试为每个新按钮创建一个新的相对布局,如代码显示的注释部分,但即使没有新的布局也没有任何反应,我仍然只是重叠所有按钮。
答案 0 :(得分:0)
您可以使用相对布局,并让第一个按钮与父级的顶部对齐。 然后每个按钮与前一个按钮的底部对齐。
使用:
params.addRule(RelativeLayout.ALIGN_PARENT_TOP);
然后:
params.addRule(RelativeLayout.BELOW,ID-Of-Previous-Button);
同时退房: http://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html
答案 1 :(得分:0)
我终于解决了这个问题,但只是尝试了每种可能的布局类型组合。 我发现,我必须在XML文件中定义一个LinearLayout,并且属性android:orientation =“vertical”是可以承受的。之前设置的所有其他参数都不重要。
所以现在我的xml文件中的ScrollView中有一个LinearLayout:
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="2" >
<LinearLayout
android:id="@+id/llActOver"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
</LinearLayout>
</ScrollView>
在java数据库中我有以下代码为db中的每一行创建一个按钮,设置它的Text和Font并将其添加到加载的布局中:
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
Button bt = new Button(context);
bt.setText(c.getString(iDef));
fontClass.setFont(bt);
linearLayout.addView(bt);
}
这里是结果的截图:
也许有其他人遇到同样的问题,只要我有这个描述就不用担心。