如何检测 Android 上的 TextView exits/enters 屏幕?
How to detect when TextView exits/enters screen on Android?
我有这个 LinearLayout
,里面的元素很少。由于有很多元素,我将其包装在 ScrollView
中。在这个 LinearLayout
中,我有一个 TextView
元素,滚动时我不会检测它何时不再在屏幕上可见。
我想做的是用 LinearLayout 显示这个 Activity 并使工具栏的标题为空,然后当用户向下滚动时,这个 TextView 退出屏幕,我想在工具栏到该 TextView 的内容。与此文本视图再次进入屏幕时类似,将工具栏中的标题设置为空。
我不知道如何实现这个以及使用什么监听器...
编辑:
这就是我想要创建的:检测文本视图何时退出或进入屏幕并相应地更新工具栏中的标题。
这适用于 API23 或更高版本,但它为您提供了基本概念。
ScrollView scroll = (ScrollView) findViewById(R.id.yourScrollView);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
scroll.setOnScrollChangeListener(new View.OnScrollChangeListener() {
@Override
public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
Log.e(TAG, "SCROLL = " + scrollY);
if(scrollY > txtView_Y){
setTitle("Hello");
}
else{
setTitle("I'm not there yet");
}
}
});
}
值 txtView_Y 是您的 TextView
的 y 位置。在 Activity 定位了所有视图之后,您必须得到它。为此,您可能需要 ViewTreeObserver.OnGlobalLayoutListener
。
我有这个 LinearLayout
,里面的元素很少。由于有很多元素,我将其包装在 ScrollView
中。在这个 LinearLayout
中,我有一个 TextView
元素,滚动时我不会检测它何时不再在屏幕上可见。
我想做的是用 LinearLayout 显示这个 Activity 并使工具栏的标题为空,然后当用户向下滚动时,这个 TextView 退出屏幕,我想在工具栏到该 TextView 的内容。与此文本视图再次进入屏幕时类似,将工具栏中的标题设置为空。
我不知道如何实现这个以及使用什么监听器...
编辑:
这就是我想要创建的:检测文本视图何时退出或进入屏幕并相应地更新工具栏中的标题。
这适用于 API23 或更高版本,但它为您提供了基本概念。
ScrollView scroll = (ScrollView) findViewById(R.id.yourScrollView);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
scroll.setOnScrollChangeListener(new View.OnScrollChangeListener() {
@Override
public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
Log.e(TAG, "SCROLL = " + scrollY);
if(scrollY > txtView_Y){
setTitle("Hello");
}
else{
setTitle("I'm not there yet");
}
}
});
}
值 txtView_Y 是您的 TextView
的 y 位置。在 Activity 定位了所有视图之后,您必须得到它。为此,您可能需要 ViewTreeObserver.OnGlobalLayoutListener
。