android - 如何滚动滚动视图到内部视图的位置
问题描述
我有一个不在“ScrollView”根级别的视图。如果我设置scrollTo(0, view.getTop())
它不起作用,它会滚动一点,我猜是因为视图不在ScrollView
.
我的视图树位于以下位置:
ScrollView
- LinearLayout
- CardView
- RelativeLayout
- LinearLayout
- MyView
有什么想法可以将滚动视图精确移动到MyView.getTop()
位置吗?
解决方案
我使用下面的代码在特定位置显示一个弹出窗口,检查它是否适用于您的情况
val location = locateView(view) // here view will be the view to which you want to scroll
scrollview.scrollTo(0, location.top)
和 locateview 功能是
fun locateView(v: View?): Rect? {
var loc_int = IntArray(2)
if (v == null) return null;
try {
v.getLocationOnScreen(loc_int)
} catch (e : NullPointerException) {
return null
}
val location = Rect()
location.left = loc_int[0]
location.top = loc_int[1]
location.right = location.left + v.width
location.bottom = location.top + v.height
return location
}
推荐阅读
- c# - 身份服务器 4 AddInMemoryIdentityResources
- python - 如何处理 Python 路径中的双“~”?
- python - Pandas 数据框从窄到宽,数据透视表没有聚合
- java - 如何让多对一对象以 JSON 格式显示
- ssh - Travis CI 无法与 publickey 进行 rsync (ssh),但相同的命令在终端中有效
- c - 只是想知道我的 C 代码编程到底出了什么问题
- javascript - 如何不让用户在输入类型日期中选择过去的日期?
- sql - SQL 自动数据从 DEC 到 HEX 的转换
- javascript - 不能在嵌套的 for 循环中使用 .insertAdjacentHTML
- python - 如何使用 Base64 字符串或字节数组设置 QLabel