Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以编程方式向LinearLayout添加多个组件_Java_Android_Android Linearlayout - Fatal编程技术网

Java 以编程方式向LinearLayout添加多个组件

Java 以编程方式向LinearLayout添加多个组件,java,android,android-linearlayout,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 re

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

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,我的按钮不见了。有什么想法吗?提前感谢。

这取决于您希望如何在线性布局中安排项目。如果您想将按钮排列在TextView旁边,那么按钮的宽度可能应该是WRAP\u CONTENT,而不是FILL\u PARENT。如果要在文本视图下显示按钮,则LinearLayout应具有垂直方向,因为默认方向为水平方向。在我看来,最简单的方法是在xml文件中定义布局。至少您可以在编译时看到输出,并在运行时使用充气器检索视图的对象。

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

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

这将解决缺少按钮的问题。

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

ret.setOrientation(LinearLayout.VERTICAL);

尝试设置ret.setOrientationLinearLayout.VERTICAL;但我试图通过添加:viewdtleventbn.setBackgroundColorcolor.lightpink;viewDtlEventBtn.setTextColorColor.WHITE;但它只是显示一个灰色按钮,上面没有文字。你说的是什么意思?对不起?但是,那又在哪里呢?那是在你编辑之前的评论中。关于您的问题,您可以发布显示灰色按钮的代码而不显示文本吗?我添加了viewdtleventbn.setBackgroundColorcolor.lightpink;viewDtlEventBtn.setTextColorColor.WHITE;但它不显示淡粉色。我确实在我的颜色中声明了浅粉色的rgb。xml我试图通过添加:viewDtlEventBtn.setBackgroundColorcolor.lightpink来定制我的按钮;viewDtlEventBtn.setTextColorColor.WHITE;但是按钮显示为灰色,上面没有文字