代码之家  ›  专栏  ›  技术社区  ›  Mads Lee Jensen

在Android中定位子视图

  •  1
  • Mads Lee Jensen  · 技术社区  · 15 年前

    我试图理解Android的视图结构,我对如何定位子视图有些困惑

    假设我有一个 FrameLayout 它将包含我的自定义视图。我的自定义视图只绘制一个50x50像素的矩形。

    所以我把我的 View.setMeasureDimension(50, 50); 现在我该如何移动这个视图?我找到了几种方法。

    1:我可以做点什么 canvas.drawRect(new Rect(offsetX, offsetY, right, bottom)); 但这会使我的视野更开阔 my measureWidth / height 不再有效?

    2:在父元素上设置填充,从而影响 left / top View.getLeft() / View.getTop() . 但这将影响所有子元素。

    3:使用 View.offsetLeftAndRight( number of pixels to move ) . 我不太明白这到底是怎么回事。是不是因为 canvas.translate() ? 但这样我就得让州政府知道我打了多少次电话 offsetLeftANdRight() 因为打电话 offsetLeftANdRight(10) 然后 右下(10) 会移动20像素。

    我有点搞不清楚“正确”的做法是什么。有更好的办法吗?

    1 回复  |  直到 13 年前
        1
  •  0
  •   Ollie C    15 年前

    Android应用程序运行在不同大小的设备上,屏幕通常完全不同。因此,您不应该使用任何绝对的定位或大小。尽可能创建视图并将它们相对放置。

    您需要熟悉Android提供的各种视图来创建布局: http://developer.android.com/guide/topics/ui/layout-objects.html

    有时需要花很多心思,因为项目在不同设备(和方向)上的位置不同,因此视图关系比绝对位置更重要。

    LinearLayout是放置控件的一个很好的通用容器,尽管RelativeLayout通常更有效(如果有时更难使用的话)

    项目相对定位后,可以使用填充和边距调整其位置。