Android - ActionBar取消 ,ToolBar设置
### 取消
ActionBar - App标题栏-继承Activity
主题基础修改 - NoActionBar
...
<style name="AppThem" parent="Theme.MaterialComponents.DayNight.NoActionBar">
...
主题配置 item项
...
<item name="windowActionBar">false</item>
<item name="windowNoTitle">false</item>
</style>
...
java设置 - 如果主题隐藏了,则获取不到对象
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
...
##### 替换 和设置
ActionBar 不够灵活-自定义不强,采用ToolBar插件替换
替换机制 - 组件 和属性 nav + title + menu
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:layout_scrollFlags="scroll|enterAlways|snap"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
设置组件替换ActionBar
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//2-1
Toolbar toolbar = findViewById(R.id.toolbar);
// toolbar.setTitle("Java中第二次设置");
setSupportActionBar(toolbar);
//开启 nav ,设置nav图标
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeAsUpIndicator(R.drawable.ic_menu);
}
....
用onCreateOptionsMenu方法添加menu
//2-2
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// return super.onCreateOptionsMenu(menu);
//渲染 menu 板块
getMenuInflater().inflate(R.menu.toolbar, menu);
return true;
}
用onOptionsItemSelected给菜单选项绑定事件
//2-3
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
// return super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case R.id.backup:
Toast.makeText(this, "back", Toast.LENGTH_SHORT).show();
break;
case R.id.delete:
Toast.makeText(this, "delete", Toast.LENGTH_SHORT).show();
break;
case R.id.setting:
Toast.makeText(this, "setting", Toast.LENGTH_SHORT).show();
break;
case android.R.id.home:
drawerLayout.openDrawer(GravityCompat.START);
break;
default:
}
return true;
}
另外Toolbar常和 AppBarLayout使用
Android学习之基础知识十五 — 最佳UI体验(Material Design实战) - 叶是风的眼泪 - 博客园 (cnblogs.com)
修改toolbar icon导航左边间距 - 必须使用主题属性 app:theme
https://gist.github.com/ktakeda47/069522ca7b4de3cb31a6
或者全局主题修改:定义style,主题配置
https://blog.csdn.net/LABLENET/article/details/51260059
浙公网安备 33010602011771号