如何检测TextView在Android上退出/进入屏幕的时间?

时间:2017-10-13 20:49:46

标签: java android textview scrollview android-toolbar

我有LinearLayout,其中包含很少的元素。由于我有很多元素,我将它包装在ScrollView内。在LinearLayout内,我有一个TextView元素,我不会在滚动时检测到它在屏幕上何时不再可见。

我想要做的是用LinearLayout显示这个Activity并使工具栏的标题为空,然后当用户向下滚动,并且此TextView退出屏幕时,我想在工具栏中将标题设置为该TextView的内容。当此文本视图再次进入屏幕以将工具栏中的标题设置为空时类似。

我不知道如何实现这个以及使用什么样的听众......

修改

这就是我要创建的内容:检测文本视图何时退出或进入屏幕并相应地更新工具栏中的标题。

enter image description here

1 个答案:

答案 0 :(得分:1)

这适用于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