我有LinearLayout
,其中包含很少的元素。由于我有很多元素,我将它包装在ScrollView
内。在LinearLayout
内,我有一个TextView
元素,我不会在滚动时检测到它在屏幕上何时不再可见。
我想要做的是用LinearLayout显示这个Activity并使工具栏的标题为空,然后当用户向下滚动,并且此TextView退出屏幕时,我想在工具栏中将标题设置为该TextView的内容。当此文本视图再次进入屏幕以将工具栏中的标题设置为空时类似。
我不知道如何实现这个以及使用什么样的听众......
修改:
这就是我要创建的内容:检测文本视图何时退出或进入屏幕并相应地更新工具栏中的标题。
答案 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
。