2017-10-13 114 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