【发布时间】:2017-07-18 15:00:48
【问题描述】:
我已经成功实现了滚动工具栏隐藏/显示,但我卡在 onTouch 隐藏/显示工具栏。我研究了许多相关问题,但对我没有任何帮助。我希望我的工具栏在用户触摸屏幕时隐藏,并在再次触摸屏幕时再次显示,请帮助
我正在使用 Android Studio
下面是我的 OnScrollListener java 类
this.mrecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
int mLastFirstVisibleItem = 0;
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
final int currentFirstVisibleItem = layout.findFirstVisibleItemPosition();
if (currentFirstVisibleItem > this.mLastFirstVisibleItem) {
HomePage.this.getSupportActionBar().hide();
} else if (currentFirstVisibleItem < this.mLastFirstVisibleItem) {
HomePage.this.getSupportActionBar().show();
}
this.mLastFirstVisibleItem = currentFirstVisibleItem;
}
});
更新
mrecyclerView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
ActionBar actionBar = getSupportActionBar();
if(actionBar.isShowing()) {
actionBar.hide();
} else
actionBar.show();
return false;
}
});
这段代码有效,但现在的问题是,每当我触摸屏幕时,它显示工具栏,而当我拿起我的手指它隐藏自己,并且当我使用 RecyclerView 时,滚动显示和隐藏所有内容变得越来越困难。请帮助使其稳定,这样如果我触摸一次它保持显示状态,而另一次触摸它就会隐藏起来。
【问题讨论】:
-
所有您需要做的就是将 onTouchEvent 注册到视图以检测触摸。维护一个标志并根据标志显示/隐藏工具栏。
-
我已将 onTouchListener 注册到 RecycleView ,您能帮我解决 flags
-
布尔 isToolbarVisible; //当屏幕被触摸时 if(isToolbarVisible){ hideToolbar; isToolbarVisible=false; }else{ 显示工具栏; isToolbarVisible=true; }
-
我试过了,但它不起作用:(
-
@SubhechhuKhanal 我已经用 onTouch 更新了我的问题,你能编辑它并告诉我哪里做错了吗。
标签: java android android-actionbar toolbar ontouchlistener