【问题标题】:How to add LinearLayout under another LinearLayout in a FrameLayout programmatically? [closed]如何以编程方式在 FrameLayout 中的另一个 LinearLayout 下添加 LinearLayout? [关闭]
【发布时间】:2013-07-12 22:25:53
【问题描述】:
FrameLayout frameLayout = new FrameLayout(this);
LinearLayout linearLayout1= new LinearLayout(this);
LinearLayout linearLayout2= new LinearLayout(this);

FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

params.gravity = Gravity.CENTER_VERTICAL;

frameLayout.addView(linearLayout1, params);

如何在linearLayout1下添加linearLayout2

【问题讨论】:

  • 编译和运行这段代码会发生什么?
  • 您能否将框架布局设为Relativelayout 并将新线性布局的layout_below 参数设置为低于第一个线性布局ala here 或者您可以将两个线性布局托管在定向的线性布局中吗垂直?
  • 如果你需要做这样的事情,你做错事的可能性很高,肯定有另一个组件可以更好地解决这个问题,你为什么不更好地解释你想要完成的事情在这里,所以我们可以帮助...
  • 如果我写 frameLayout.addView(linearLayout2, params);最后一行,两个布局设置在同一个地方@MonadNewb

标签: android android-linearlayout android-framelayout


【解决方案1】:

基于您的代码有效的知识。

将 FrameLayout 更改为垂直线性布局,即将子级布局在彼此下方。

LinearLayout parentLayout = new LinearLayout(this);
LinearLayout linearLayout1= new LinearLayout(this);
LinearLayout linearLayout2= new LinearLayout(this);

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

params.gravity = Gravity.CENTER_VERTICAL;

parentLayout.setOrientation(VERTICAL);
parentLayout.addView(linearLayout1, params);
parentLayout.addView(linearLayout2, params);

【讨论】:

  • setOrientation 方法@Blundell 中的 (VERTICAL) 处发生错误
  • 我解决了,你应该写 LinearLayout.VERTICAL ,谢谢
【解决方案2】:

FrameLayout Documentation 声明:

...子视图绘制在堆栈中,最近添加的子视图在顶部。 FrameLayout 的大小是其最大子项的大小(加上填充)...

所以你不能(至少很容易)做你想做的事。但是,作为根的 LinearLayout 会自动执行此操作,因此我建议考虑使用...

希望这会有所帮助...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多