如何检测TextView在Android上退出/进入屏幕?
问题描述:
我有这个LinearLayout
与它几个元素。由于我有很多元素包装在ScrollView
内。在这个LinearLayout
内部,我有一个TextView
元素,我不会在滚动时在屏幕上看不到它。如何检测TextView在Android上退出/进入屏幕?
我想要做的事情是用LinearLayout显示这个活动,并使工具栏的标题为空,然后当用户向下滚动,并且此TextView退出屏幕时,我想在工具栏中设置标题为该内容TextView中。与此类似,当此文本视图再次进入屏幕以将工具栏中的标题设置为空时。
我不知道如何实现这一点,使用什么样的听众......
编辑:
这是我想要的创建:当检测文本视图退出或进入屏幕和更新相应地在工具栏中标题
答
这将为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
。
更精确。 – Jay
你有没有试过我的解决方案建议? – Barns
噢,对不起,是的,我的确行得通了! – clzola