【问题标题】:Adding Multiple Components to LinearLayout Programatically以编程方式将多个组件添加到 LinearLayout
【发布时间】:2014-11-12 17:05:55
【问题描述】:

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

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 并且我的按钮不见了。有任何想法吗?提前致谢。

【问题讨论】:

标签: java android android-linearlayout


【解决方案1】:

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

【讨论】:

  • 但我尝试通过添加自定义按钮:viewDtlEventBtn.setBackgroundColor(color.lightpink); viewDtlEventBtn.setTextColor(Color.WHITE);但它只显示一个灰色按钮,上面没有文字
  • 你说的那么是什么意思?
  • 对不起?但是那个时候呢?
  • 它在您之前的评论中(在编辑之前)。关于您的问题,您可以发布显示灰色按钮的代码,没有文字吗?
  • 我添加了 viewDtlEventBtn.setBackgroundColor(color.lightpink); viewDtlEventBtn.setTextColor(Color.WHITE);但它不显示浅粉红色。我确实在我的 colors.xml 中声明了 lightpink 的 rgb
【解决方案2】:

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

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

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

【讨论】:

  • 我尝试通过添加自定义按钮:viewDtlEventBtn.setBackgroundColor(color.lightpink); viewDtlEventBtn.setTextColor(Color.WHITE);但按钮原来是灰色的,上面没有文字
【解决方案3】:

Linear Layout 忘记设置 Layout Orientation 了,设置如下:

ret.setOrientation(LinearLayout.VERTICAL);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    相关资源
    最近更新 更多