首页 > 解决方案 > 如何滚动滚动视图到内部视图的位置

问题描述

我有一个不在“ScrollView”根级别的视图。如果我设置scrollTo(0, view.getTop())它不起作用,它会滚动一点,我猜是因为视图不在ScrollView.

我的视图树位于以下位置:

ScrollView 
   - LinearLayout
        - CardView
           - RelativeLayout
              - LinearLayout
                   - MyView

有什么想法可以将滚动视图精确移动到MyView.getTop()位置吗?

标签: android

解决方案


我使用下面的代码在特定位置显示一个弹出窗口,检查它是否适用于您的情况

 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
}

推荐阅读