实际上这些方法之间的合同是什么?我想,layout()调用setX(),但不知何故,layout()在调用setX()后停止工作。
view.layout(256, 256, 512, 512);
view.setX(0);
view.layout(256, 256, 512, 512);
但视图保持在{0,256}。为什么这样?
答案 0 :(得分:1)
view.layout(256,256,512,512)
表示: 为视图及其所有后代指定大小和位置 这是布局机制的第二阶段。 (第一个是测量)。在此阶段,每个父级都会调用其所有子级上的布局来定位它们。这通常使用存储在度量pass()中的子度量来完成。 派生类不应覆盖此方法。带子项的派生类应覆盖onLayout。在那种方法中,他们应该为每个孩子调用布局。 参数 升 左侧位置,相对于父级 Ť 最高位置,相对于父母 [R 正确的位置,相对于父母 b 相对于父母的底部位置
view.getX()
此视图的可视x位置(以像素为单位)。这相当于translationX属性加上当前的left属性。 返回 此视图的可视x位置(以像素为单位)。
希望这有意义......
答案 1 :(得分:1)
在我的理解child.layout(Int,int ,int ,int)
中用于识别孩子的大小。在绘制layout.u之后设置X
位置以保持在那里......因此它保持x大小的位置。< / p>