0

下午好,

我无法让RelativeLayout 在ListView 中工作。如果我将布局更改为线性等。我会看到它的行为与我预期的一样,但是 RelativeLayout 将所有内容都压缩到重叠空间中。现在我没有受过教育的猜测是,它正试图将所有内容都塞进一行。我认为它会扩展该行,但也许不会,或者这不是问题。

请注意,我的代码已缩写为空格。

无论如何在我的父 XML 中:

<LinearLayout ..._width="fill_parent" ..._height="fill_parent" ...orientation="vertical" >
    <ListView ...layout_width="fill_parent" ...layout_height="fill_parent" />
</LinearLayout>

所以我的想法是这会填满设备屏幕,并且在 Eclipse 的 GraphicalLayout 视图中它似乎确实如此。

我对 ListView 的“行”定义是这样的:

<RelativeLayout width="fill_parent" height="fill_parent" >

    <ImageView
       android:layout_width="60dp"
        android:layout_height="30dp"
        android:layout_alignParentLeft="true"
        android:layout_marginTop="15dp"
        android:layout_marginLeft="5dp" />
      .....
</RelativeLayout>

如前所述,我认为这将填充所有可用空间,但它似乎只填充某种“默认”行高?

不知道我错过了什么,但任何帮助将不胜感激。

4

3 回答 3

2

在您的 xml 中使用布局属性layout-above, layout-below, layout-toRightOf, 。layout-toLeftOf这样,物品就会放在您希望它们去的地方。现在您正在根据父级设置所有内容,因此它们都会重叠

于 2012-05-16T19:35:12.867 回答
1

RelativeLayout默认情况下,将其子项添加到布局的左上角。

通过使用 的非常方便的属性RelativeLayout,您可以同时安排孩子

  • 相对于彼此,并且
  • 相对于父视图。

layout_alignParentLeft, ..Right, ..Top, ..Bottom, layout_centerInParent, layout_centerHorizontal, layout_centerVertical, layout_toLeftOf, ..toRightOf, ..above,..below

这些属性将帮助您以非常有效(平面)的方式获得所需的显示,因此我建议继续阅读并考虑使用它而不是其他布局容器来实现复杂视图。

于 2012-05-16T19:48:53.657 回答
0

我最终覆盖了 ArrayAdapter 的 getView,然后将高度和宽度设置为动态确定的屏幕尺寸

……剪……

int[] iarry_ScrnDim = new int[2];

DisplayMetrics metrics = new DisplayMetrics();
metrics = ctx_Currnt.getResources().getDisplayMetrics();

iarry_ScrnDim[0] = metrics.heightPixels;
iarry_ScrnDim[1] = metrics.widthPixels;

return iarry_ScrnDim;

....剪断....

if (vw_BigRow == null)
{
    LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    vw_BigRow = inflater.inflate(R.layout.liftdatalayout, null);
}

vw_BigRow.setMinimumHeight(mHeight);
vw_BigRow.setMinimumWidth(mWidth);
于 2012-06-08T01:36:57.807 回答