【问题标题】:Where does Android View.scrollTo(x, y) scroll to?Android View.scrollTo(x, y) 滚动到哪里?
【发布时间】:2023-03-11 15:56:01
【问题描述】:

scrollTo(int x, int y) 说:

x 要滚动到的 x 位置

y 要滚动到的 y 位置

onScrollChanged(int l, int t, int oldl, int oldt) 说:

l 当前水平滚动原点。

t 当前垂直滚动原点。

我想知道但在任何地方都找不到,x,y 在哪里?左上方?中心?我试了几下,还是搞不定。

【问题讨论】:

    标签: android android-view android-scroll


    【解决方案1】:

    经过广泛的研究和测试,我终于明白了scrollTo() 的工作原理。

    (0,0)View 容器左上角的坐标。当滚动到任何(x,y) 点时,View 的左上角将位于(x,y) 坐标处。

    如果View 显示的图像Bitmap 大于View 本身,则滚动到(0,0) 会将View 放置在图像的中心。这样,图像的左上角将位于(-dX/2, -dY/2),右下角位于(mW - dX/2, mH - dY/2)dX 表示图像宽度与View 之间的差异。而dY 表示图像高度与View 之间的差异。

    为了看到右下角而不是通过它(右下角或更远),这是正确的调用:scrollTo(mW - ivW - dX/2, mH - ivH - dY/2);

    所附图像显示了View 的图形表示和位图图像定位。

    【讨论】:

    • 我现在有一个问题...这取决于视图的严重性,我错了吗?如果我将重力设置为“顶部”,位图应该与 ImageView 的顶部对齐?
    • 我还没有测试过。但是,因为 Bitmap 的大小比实际的 View 大,所以对齐不应该影响它。让我知道您是否对其进行了测试以及结果如何。
    【解决方案2】:

    来自getX()

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

    对于getY(),它来自顶部。所以 (0,0) 在左上角。

    我不知道scrollTo() 是否考虑了translationX 属性,因为它是“最近的”并且我有一段时间没有编写代码了,但我敢打赌。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-30
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 1970-01-01
      相关资源
      最近更新 更多