java - 如何在 Android 中完全禁用上下文操作栏?

标签 java android android-layout android-actionbar android-toolbar

没有任何工具栏,但在 api v23 以下的文本选择时显示上下文操作栏,以下代码无法禁用/删除。如何完全禁用/删除?
enter image description here

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_read_book);

    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
                    | View.SYSTEM_UI_FLAG_IMMERSIVE);
    getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_IMMERSIVE  | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION  | View.SYSTEM_UI_FLAG_FULLSCREEN);

    if (getSupportActionBar() != null) {
        getSupportActionBar().setHomeButtonEnabled(false);
        getSupportActionBar().setDisplayHomeAsUpEnabled(false);
        getSupportActionBar().setDisplayShowHomeEnabled(false);
        getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(false);
        getSupportActionBar().setDisplayShowCustomEnabled(false);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        getSupportActionBar().setHomeButtonEnabled(false);
        getSupportActionBar().removeAllTabs();
        getSupportActionBar().setShowHideAnimationEnabled(false);
        getSupportActionBar().hide();
        getSupportActionBar().collapseActionView();
        getSupportActionBar().closeOptionsMenu();
        getSupportActionBar().setHomeAsUpIndicator(null);
    }
}
我的应用主题:
<style name="MyAppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    ...
    <item name="windowActionBar">false</item>
    ...
</style>
编辑:
使用 CustomSelectionActionModeCallback 长时间单击我的 TextView 时打开一个特殊菜单 fragment ,并且我必须返回 true onCreateActionMode 方法,因为为了避免在选择过程中取消选择,这样(返回 true)事件被阻止下降但 Action bar 正在打开 api 级别 23 及以下。
mTextViewItem.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        ...
        showMyMenuFragment();
        ...
        return true;
    }
    
    @Override
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        menu.clear();
        return false;
    }
    
    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        return false;
    }
    
    @Override
    public void onDestroyActionMode(ActionMode mode) {
    
    }
});

最佳答案

使用 .NoActionBar 之一主题并设置windowActionBar归属于 false .
从 API 级别 21 开始,操作栏可以用应用程序布局中的任何工具栏小部件来表示。应用程序可以选择使用 setSupportActionBar() 将 Toolbar 指定为 Activity 的操作栏。方法。

关于java - 如何在 Android 中完全禁用上下文操作栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62436896/

相关文章:

java - 安卓。记录应用程序输出的替代方法

android - slider 选择 -24 和 24 之间的数字,步长为 0.5

android - 如何以编程方式圆角并设置随机背景颜色

java - 从项目文件安装 Eclipse 插件

android - 操作栏标题多于一行?

java - ParameterizedType 和创建通用 dao

android - 减少 BitmapDrawable 大小

android - 如何更改 Android 中 textview 元素的字体大小?

Java正则表达式如何匹配_、/或/123?

java - 在安装brew cask后缺少java源文件采用openjdk11