gpt4 book ai didi

Android ScrollView onScrollChanged

转载 作者:IT老高 更新时间:2023-10-28 22:23:22 33 4
gpt4 key购买 nike

我在 ScrollView 内的 TextView 中有固定内容。当用户滚动到某个位置时,我想启动一个 Activity 或触发一个Toast

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:id="@+id/scroller">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent" android:id="@+id/story"
android:layout_height="wrap_content" android:text="@string/lorem"
android:gravity="fill" />
</LinearLayout>
</ScrollView>

我的问题是在实现 protected 方法 onScrollChanged 以找出 ScrollView 的位置。

我找到了this答案,有没有更简单的解决方案,而不是声明一个界面,覆盖我发布的链接上的 ScrollView 等?

最佳答案

有一种比继承 ScrollView 更简单的方法。 . ViewTreeObserver ScrollView 的对象可以用来监听卷轴。

自从 ViewTreeObserver对象可能会在 ScrollView 的生命周期内发生变化,我们需要注册一个OnTouchListenerScrollView得到它的ViewTreeObserver在滚动时。

final ViewTreeObserver.OnScrollChangedListener onScrollChangedListener = new
ViewTreeObserver.OnScrollChangedListener() {

@Override
public void onScrollChanged() {
//do stuff here
}
};

final ScrollView scrollView = (ScrollView) findViewById(R.id.scroller);
scrollView.setOnTouchListener(new View.OnTouchListener() {
private ViewTreeObserver observer;

@Override
public boolean onTouch(View v, MotionEvent event) {
if (observer == null) {
observer = scrollView.getViewTreeObserver();
observer.addOnScrollChangedListener(onScrollChangedListener);
}
else if (!observer.isAlive()) {
observer.removeOnScrollChangedListener(onScrollChangedListener);
observer = scrollView.getViewTreeObserver();
observer.addOnScrollChangedListener(onScrollChangedListener);
}

return false;
}
});

关于Android ScrollView onScrollChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4263053/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com