我试图在用户点击 Activity 时切换显示/隐藏操作栏,所以我在 Activity 中实现了这样的功能:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
Log.d("ACTION BAR", "triggered");
super.dispatchTouchEvent(ev);
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
if (actionBar.isShowing()) {
actionBar.hide();
} else {
actionBar.show();
}
return true;
}
但是,问题是当点击 Activity 时,操作栏被隐藏,但随后立即再次显示。我添加了日志记录,这个方法似乎被触发了两次,为什么?
最佳答案
我认为 dispatchTouchEvent 可能会在触地和向上 Action 时被调用两次,所以在显示操作栏之前取一个 bool 标志并检查这个标志值:
private boolean isManuallyHideShownActionBar;
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
super.dispatchTouchEvent(ev);
ActionBar actionBar = getSupportActionBar();
if(!isManuallyHideShownActionBar){
if (actionBar.isShowing()) {
actionBar.hide();
} else {
actionBar.show();
}
isManuallyHideShownActionBar = true;
}else{
isManuallyHideShownActionBar = false;
}
return true;
}
关于android - 操作栏被隐藏,之后立即显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30117177/