如何在单击时在scrollView中居中布局?

时间:2018-01-17 19:32:03

标签: android uiscrollview

所以我在这里有这个布局:

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/scrollView"
    >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:id="@+id/instructions">

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:text="Sample text 1"/>            

            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:text="Sample text 2"/>            

            <TextView
                android:id="@+id/textView3"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:text="Sample text 3"/>      


    </LinearLayout>

</ScrollView>

(为了简单起见,我刚刚编写了textView3,但是说更多并且scrollView是可滚动的)然后在这个scrollView外面有一个按钮。每次单击该按钮时,scrollView都会滚动并将视图居中到下一个textView。我怎样才能做到这一点?

我已尝试获取视图的高度,然后将其添加到scrollView.scrollTo(y)上使用,但检索高度给了我很多问题,我使用了ViewTreeObserver进程,但我无法&#39 ; t检索

内的高度
  

.addOnGlobalLayoutListener(New ViewTreeObserver ...

并将其放在变量上。但我用这种方法失败了。我究竟做错了什么?或者有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以考虑使用RecyclerView并将新项添加到列表中,然后调用scrollToPosition(position)函数滚动到最新项。 不要忘记将paddingBottom添加到RecyclerView,以便能够将最后一个视图滚动到中心。 (screenHeight / 2使用paddingBottom