【问题标题】:setX(), setTranslationX(), setY(), and setTranslationY()setX()、setTranslationX()、setY() 和 setTranslationY()
【发布时间】:2016-02-15 13:27:39
【问题描述】:

setX()、setY() 和 setTranslationX()、setTranslationY() 有什么区别?他们是在现有坐标上设置偏移量还是设置绝对位置?

如果他们设置绝对坐标会不会与父布局的约束冲突?

假设我们有类似的东西 | View 1 | View 2 | View 3|

在 LinearLayout 中,如果我们执行 view2.setX(0);view2.setTranslationX(0); 会如何让视图 2 与视图 1 重叠或将视图 1 推到一边?

同样,如果我们有一个将 alignParentBottom 设置为 true 的 RelativeLayout 的子级,但我们在代码中手动将该子级的 y 坐标设置为 0。哪个布局规则胜出?

基本上,我对手动坐标如何影响容器的布局规则以及平移和 X/Y 之间的差异感到困惑。如果这看起来微不足道,我提前道歉,但我是来自 iOS 的 Android 新手。

【问题讨论】:

    标签: java android android-layout


    【解决方案1】:

    来自文档,setTranslationX 是:

    设置此视图相对于其左侧位置的水平位置。除了对象的布局放置它的位置之外,这有效地定位了布局后的对象。

    setX 是:

    设置此视图的视觉 x 位置,以像素为单位。这相当于将translationX属性设置为传入的x值与当前left属性的差值。

    因此,您可以将setTranlsationX 视为相对偏移:将您通常所在的位置向左移动 3 个像素。而setX 是一个固定的位置:移动任何你需要的东西,这样你最终会在坐标 X 处绘制。

    【讨论】:

    • 当前的左、上、右、下属性通常是由父布局设置的吗?还是 setX setY 等会覆盖父级的值?
    • left/top/right/bottom 属性由布局设置。 setTranslationX 之类的东西会根据这些属性调整小部件的实际绘制位置。
    【解决方案2】:

    setX/Y 从 0,0 屏幕设置绝对位置。 setTranlsationX/Y 从布局中视图的默认位置设置位置。

    【讨论】:

      【解决方案3】:

      设置XY 设置视图相对于父视图左上角的位置(不是屏幕上的绝对位置)。设置平移相对于父级布局的位置移动视图。 (父级在(left, top) 放置视图。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-22
        • 2019-01-11
        • 2021-05-29
        • 1970-01-01
        • 2017-08-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多