如何覆盖Android ScrollView的初始位置?

时间:2016-10-18 09:56:58

标签: android android-fragments android-viewpager scrollview android-scrollview

我的ViewPager片段中有一个scrollView。我想将初始scrollView位置设置为(0,100)。

我尝试在{{1}}中设置{{1}}。它没用。

然后我在Handler中尝试了同样的功能,但它只在(0,0)之后滚动到(0,100),导致scrollView中的小混蛋,这对用户体验不利。

有没有办法让scrollview直接滚动到(0,100)而不是(0,0)?或者scrollView中是否有任何方法可以检测初始滚动事件?

P.S:我看到问题here也与我的问题相同,但接受的答案对我不起作用。

任何帮助将不胜感激。 感谢

2 个答案:

答案 0 :(得分:0)

而不是scrollTo,您可以在滚动视图的内部布局的第一个子项上使用requestFocus。

示例:

  <ScrollView>

    <LinearLayout>

        <TextView
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:tag="ScrollTopTag" />
        //***rest of your layout***//
    </LinearLayout>

</ScrollView>

在您想要滚动到滚动视图顶部的活动中添加以下行

View view = findViewByTag(“ScrollTopTag”); view.requestFocus();

答案 1 :(得分:0)

感觉就像你在适配器内部膨胀视图而不回收它们。这可以解释不稳定的加载时间。除此之外,从示例中,尝试进一步延迟它。在示例中它使用250毫秒,但是如果你的列表视图没有完成加载,那么它不会在任何地方滚动,因为它还没有填充。我会开始,但首先将持续时间增加到大约2000毫秒,看看它是否有效。如果可行的话,我会回到你的适配器类,确保每个视图都是循环使用而不是重新充气。