View 的 setX()、setY() 和 layout()

Posted

技术标签:

【中文标题】View 的 setX()、setY() 和 layout()【英文标题】:View's setX(), setY() and layout() 【发布时间】:2015-01-02 11:01:14 【问题描述】:

这些方法之间实际上有什么契约?我以为,layout() 调用 setX(),但不知何故,layout() 在调用 setX() 后停止工作。

view.layout(256, 256, 512, 512);
view.setX(0);
view.layout(256, 256, 512, 512);

但视图停留在 0, 256。为什么会这样?

【问题讨论】:

你的意思是onLayout(boolean, int, int, int, int) 对不起,我的意思是布局(int,int,int,int) 【参考方案1】:
 view.layout(256,256,512,512) 

的意思: 为视图及其所有后代分配大小和位置 这是布局机制的第二阶段。 (首先是测量)。在这个阶段,每个父级调用其所有子级的布局来定位它们。这通常使用存储在度量 pass() 中的子度量来完成。 派生类不应覆盖此方法。具有子级的派生类应覆盖 onLayout。在这种方法中,他们应该在他们的每个孩子上调用布局。 参数 l 左侧位置,相对于父级 吨 顶部位置,相对于父级 r 相对于父级的正确位置 b 底部位置,相对于父级

view.getX()

此视图的视觉 x 位置,以像素为单位。这相当于translationX 属性加上当前的left 属性。 退货 此视图的视觉 x 位置,以像素为单位。

希望这是有道理的......

【讨论】:

【参考方案2】:

在我的理解中,child.layout(Int,int ,int ,int) 用于确定孩子有多大。在绘制布局之后。你正在设置X 位置以保持在那里..所以它保持 x 位置的大小。

【讨论】:

以上是关于View 的 setX()、setY() 和 layout()的主要内容,如果未能解决你的问题,请参考以下文章

QPainter and QPen

武道之路-炼体期三重天

Java泛型

Android 安卓记录开发遇到的一个坑,直接对View setX()部分机型不适配问题

移动ImageView(Android)[重复]

如何将屏幕坐标插入hashmap android