簡體   English   中英

如何完全禁用 Android 中的上下文操作欄?

[英]How to completely disable contextual action bar in Android?

沒有任何工具欄,但在 api v23 下方的文本選擇時顯示上下文操作欄,以下代碼無法禁用/刪除。 如何完全禁用/刪除?

在此處輸入圖像描述

@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 時打開一個特殊菜單片段,並且我必須將 onCreateActionMode 方法返回 true,因為為了避免在選擇過程中取消選擇,這樣(返回 true)事件被阻止下降,但動作酒吧正在打開 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 的操作欄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM