有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java以编程方式向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) 个答案

  1. # 1 楼答案

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

    ret.setOrientation(LinearLayout.VERTICAL);
    
  2. # 2 楼答案

    这取决于您希望如何安排LinearLayout中的项目。如果要将按钮排列在TextView旁边,那么按钮宽度可能应该是WRAP_CONTENT,而不是FILL_PARENT。如果要在TextView下显示按钮,那么LinearLayout应该有vertical作为orientation(默认值为horizontal)。在我看来,最简单的方法是在xml文件中定义布局。至少您可以在编译时看到输出,并在运行时使用充气器检索View的对象

  3. # 3 楼答案

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

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

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