为什么我的商品溢出了LinearLayout?

时间:2017-03-22 16:20:18

标签: java android android-studio

我的这个LinearLayout包含八个以编程方式添加的项目。
但正如你们所看到的那样,这些物品从屏幕溢出到右侧。

我的LinearLayout代码:

<LinearLayout
    android:id="@+id/items"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/segmento"
    android:layout_weight="1"
    android:orientation="horizontal"
    android:padding="16dp">

LinearLayout中的ImageView以{ImageView}.setLayoutParams(new LinearLayout.LayoutParams(184, 184));编程方式添加 然后items.addView({ImageView})

只需添加信息,屏幕截图中就会隐藏"@+id/segmento"

谢谢! :d

3 个答案:

答案 0 :(得分:1)

线性布局不支持溢出到下一行。
您只能划分孩子们的可用空间,这样每个人都可以变得足够小,以使他们彼此相邻。 (为此,请查看布局参数上的weight属性)。

但是, 真正 想要的内容称为FlexBoxLayout。这已经被谷歌移植到Android很久以前了,并且完全符合您的要求。

答案 1 :(得分:0)

尝试将布局宽度设置为match_parent。由于您的方向设置为水平,宽度设置为wrap_content,因此可能不会考虑屏幕大小。

答案 2 :(得分:0)

以编程方式添加图像视图时,尝试使用MATCH_PARENT作为宽度和WRAP_CONTENT:

{ImageView}.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT
            ,LinearLayout.LayoutParams.WRAP_CONTENT));
items.addView({ImageView})

这将确保它可以在具有不同屏幕尺寸的设备上工作。如果您对宽度和高度进行硬编码,则可能无法在所有设备上使用。

同样在您的布局中,将线性布局转换为

android:layout_width="match_parent"
android:layout_height="wrap_content"