android - 操作栏被隐藏,之后立即显示

标签 android android-actionbar

我试图在用户点击 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/

相关文章:

android - Phonegap + 网络服务

android - 用于 parking 位的 Google Place API

android - 在这种情况下溢出意味着什么?

java - 更改 fragment 中的 ActionBar 标题

android - 使用 api 7 的 appcompat 自定义操作栏颜色

android - React Native Android 应用白屏无法启动

android - 是否可以将 DownloadManager.Request 限制为特定的服务器证书?

java - 为什么我的 AlarmManager 不触发 BroadcastReceiver

android微调器下拉列表

java - Android,不生成ActionBar