操作栏被隐藏,之后立即显示
Action bar is hidden and that shown instantly after that
我正在尝试在用户点击 activity 时切换 show/hide 操作栏,所以我在 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 可能会在触地和向上动作时被调用两次,所以在显示操作栏之前取一个布尔标志并检查该标志值:
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;
}
我正在尝试在用户点击 activity 时切换 show/hide 操作栏,所以我在 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 可能会在触地和向上动作时被调用两次,所以在显示操作栏之前取一个布尔标志并检查该标志值:
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;
}