0

我创建了一个带有database调用的布局,其中button将为database. 就像我需要的buttons那样创建,我还发现了如何设置layout_widthlayout_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);

但不确切知道如何使用它,并认为可能有一种更简单的方法来解决这个问题。谁知道解决方法?!


更改代码

我只是尝试设置布局参数,如“Chen doron”中解释的那样。我的 xml 文件中有一个相对布局:

<RelativeLayout
        android:id="@+id/llActOver"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="2" >        
</RelativeLayout>

并像这样格式化生成的按钮:

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);

我在循环结束时保存按钮 id,以便在下一轮访问最后一个按钮 id。我还尝试为每个新按钮创建一个新的相对布局,就像代码的注释部分显示的那样,但即使没有新布局,也没有任何反应,我仍然只是所有按钮重叠。

4

2 回答 2

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数据库中,我有以下代码为数据库中的每一行创建一个按钮,设置其文本和字体并将其添加到加载的布局中:

for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {

    Button bt = new Button(context);
    bt.setText(c.getString(iDef));
    fontClass.setFont(bt);
    linearLayout.addView(bt);
}

这里是结果的截图:

在此处输入图像描述

也许有同样问题的其他人只要我有这个描述就不需要担心。

于 2012-12-20T18:42:01.427 回答
0

您可以使用相对布局,并使第一个 Button 与父级的顶部对齐。然后每个按钮与前一个按钮的底部对齐。

利用:

params.addRule(RelativeLayout.ALIGN_PARENT_TOP);

接着:

params.addRule(RelativeLayout.BELOW,ID-Of-Previous-Button);

另请查看:http: //developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html

于 2012-12-16T23:08:14.727 回答