我已经成功实现了滚动工具栏上的隐藏/显示,但我被困在 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 时,很难滚动显示和隐藏所有内容。请帮助使其稳定,这样如果我触摸一旦它保持显示和另一次触摸它隐藏自己。
答案 0 :(得分:1)
layout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
if (actionBar.isShowing()) {
actionBar.hide();
} else {
actionBar.show();
}
return true;
} else return false;
}
});
答案 1 :(得分:0)
将onTouchListener用于根布局。并在回调中编写代码。