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

 

posted @ 2021-11-04 14:09  naibox  阅读(320)  评论(0编辑  收藏  举报