在Android中定位子视图

时间:2010-11-23 14:27:11

标签: android android-layout

我正在尝试了解Android的View结构,我对如何定位子视图感到有点困惑

假设我有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)然后调用offsetLeftANdRight(10)会将其移动20px。

我对这种做法的“正确”方式有点困惑。还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

LinearLayout是一个用于放置控件的好用的通用容器,虽然RelativeLayout通常更有效(如果有时更难使用)

一旦项目相对于彼此定位,您可以使用填充和边距调整其位置。