如何检测 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