代码之家  ›  专栏  ›  技术社区  ›  clzola

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

  •  -1
  • clzola  · 技术社区  · 8 年前

    我有这个 LinearLayout 里面几乎没有什么元素。因为有很多元素,我把它包在里面 ScrollView . 在这里面 线性布局 我有一个 TextView 元素和我不会检测它何时在滚动时不再在屏幕上可见。

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

    我不知道如何实现这一点,以及使用什么侦听器。。。

    编辑 :

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

    enter image description here

    1 回复  |  直到 8 年前
        1
  •  1
  •   Barns    8 年前

    这适用于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 . 在活动定位所有视图后,您将必须获得该信息。您可能需要 ViewTreeObserver.OnGlobalLayoutListener 为此。