我正在尝试了解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。
我对这种做法的“正确”方式有点困惑。还有更好的方法吗?
答案 0 :(得分:0)
Android应用程序在不同大小的设备上运行,屏幕通常完全不同。因此,您不应该使用任何绝对定位或尺寸。尽可能创建视图并将它们相对于彼此定位。
您需要熟悉Android提供的各种视图来创建布局: http://developer.android.com/guide/topics/ui/layout-objects.html
有时需要花费很多心思,因为在不同的设备(和方向)上项目的位置会有所不同,因此视图关系比绝对位置更重要。
LinearLayout是一个用于放置控件的好用的通用容器,虽然RelativeLayout通常更有效(如果有时更难使用)
一旦项目相对于彼此定位,您可以使用填充和边距调整其位置。