作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有 HorizontalScrollView 和几个 TextView。每个 TextView 可能包含不同长度的文本。
我应该如何使用“scrollTo(x, y)”计算滚动到的正确偏移量?
滚动有效,但与预期不同。我已经尝试了各种方法(getLocationOnScreen()、getMeasuredWidth()、getWidth() 在每个子元素上并将它们添加到 getehr),但我仍然无法获得我喜欢的结果。 View 滚动得有点远或不够。
解决方案
当 HSV 有多个不同宽度的元素时,你可以像这样在每个元素上居中:
for (TextView el : requiresFocus) {
if (el.getText().equals(requiresFocus)) {
offsetX = ((el.getLeft() + el.getRight()) / 2) - (myHSV.this.getWidth() / 2);
scrollTo(offsetX, 0);
break;
}
}
使用 ((el.getLeft() + el.getRight())/2)
您将获得元素的中心,使用 (myHSV.this.getWidth()/2 )
您将获得屏幕的中心。
最佳答案
试试这个:
int x, y;
x = myTextView.getLeft();
y = myTextView.getTop();
myHsv.scrollTo(x, y);
getLeft()
和 getTop()
应该返回相对于父 View (即本例中的 HorizontalScrollView
)的坐标。
关于Android 计算 scrollTo 在 HorizontalScrollView 中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7002282/
我是一名优秀的程序员,十分优秀!