以编程方式将多个组件添加到LinearLayout

时间:2014-11-12 08:57:13

标签: java android android-linearlayout

我正在尝试以编程方式将多个组件添加到线性布局中。以下是代码:

private View createCalloutView(Graphic graphic) {
    LinearLayout ret = new LinearLayout(this);
    ret.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT));

    TextView reportContent = new TextView(this);
    reportContent.setText(eventName + "\n" + eventBy + "\n" + eventAddress + "\n" + eventDesc
            + "\n" + eventDate + "\n" + eventTime);
    reportContent.setTextColor(Color.BLACK);
    reportContent.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 12);
    reportContent.setPadding(1, 0, 1, 0);

    Button viewDtlEventBtn = new Button(this);
    viewDtlEventBtn.setText("View details");
    viewDtlEventBtn.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 
            LayoutParams.WRAP_CONTENT));

    ret.addView(reportContent);
    ret.addView(viewDtlEventBtn);
    return ret;
}

使用这些代码,我只能看到textview并且我的按钮丢失了。有任何想法吗?提前谢谢。

3 个答案:

答案 0 :(得分:0)

取决于您希望如何安排LinearLayout中的项目。如果您想安排TextView旁边的按钮,那么按钮宽度应该是WRAP_CONTENT而不是FILL_PARENT。如果您想在TextView下显示该按钮,那么您的LinearLayout应该verticalorientation(默认为horizontal)。 Imo,最简单的方法是在xml文件中定义您的布局。至少你可以在编译时看到输出,并使用inflater在运行时检索View的对象

答案 1 :(得分:0)

线性布局的默认方向是水平的。您需要先设置方向。

LinearLayout ret = new LinearLayout(this);
ret.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
        LayoutParams.WRAP_CONTENT));
ret.setOrientation(LinearLayout.VERTICAL);

这将解决您丢失按钮的问题。

答案 2 :(得分:0)

您忘记为线性布局设置布局方向,只需将其设置如下:

ret.setOrientation(LinearLayout.VERTICAL);
相关问题