在触摸屏幕上的任何位置时隐藏和显示工具栏



我已经成功地实现了滚动工具栏隐藏/显示,但我被困在触摸隐藏/显示工具栏上。 我已经研究了许多相关问题,但没有任何问题适合我。我希望我的工具栏在用户触摸屏幕时隐藏,并在再次触摸屏幕时再次显示,请帮助

我正在使用安卓工作室

下面是我的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时,很难滚动显示和隐藏所有这些内容。 请帮助使其稳定,以便如果我触摸一次它保持显示状态,而在另一次触摸时它会隐藏自己。

你去吧。这应该:)

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;
}
});

将 onTouchListener 用于根布局。并在回调中编写代码。

最新更新