【发布时间】:2020-10-07 17:42:57
【问题描述】:
没有任何工具栏,但在 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) {
}
});
【问题讨论】:
-
您是否尝试过使用没有操作栏的主题的其他工具栏?
-
我都试过了,目前是@style/AppTheme.NoActionBar。
-
@ATES 你的 Activity 扩展了 AppCompatActivity 还是 Activity?
-
@ATES 如果你的activity扩展了Activty,那么你需要做
getActionBar().hide();
标签: java android android-layout android-actionbar android-toolbar