2017-10-13 145 views
-1

我有这个LinearLayout与它几个元素。由于我有很多元素包装在ScrollView内。在这个LinearLayout内部,我有一个TextView元素,我不会在滚动时在屏幕上看不到它。如何检测TextView在Android上退出/进入屏幕?

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

我不知道如何实现这一点,使用什么样的听众......

编辑

这是我想要的创建:当检测文本视图退出或进入屏幕和更新相应地在工具栏中标题

enter image description here

+0

更精确。 – Jay

+0

你有没有试过我的解决方案建议? – Barns

+0

噢,对不起,是的,我的确行得通了! – clzola

回答

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位置。在“活动”定位了所有视图之后,您必须获取该信息。你可能需要ViewTreeObserver.OnGlobalLayoutListener