前言

上一篇《ActionBar中Menu使用》介绍的是主题样式中默认显示ActionBar,这种有局限性不好自定义。

因此我们主题样式中隐藏NoActionBar,使用ToolBar来定制更多的选项。

正文

# 带ActionBar
Theme.MaterialComponents.Light

# 不带ActionBar
Theme.MaterialComponents.Light.NoActionBar

之前是用了带ActionBar的,这就用不带ActionBar的。

新主题样式

Theme.MaterialComponents.Light.NoActionBar

使用ToolBar

ToolBar的简单使用

  1. app:navigationIcon 设置 navigation button

  2. app:logo 设置 logo 图标

  3. app:title 设置标题

  4. app:titleTextColor 设置标题文字颜色

  5. app:subtitle 设置副标题

  6. app:subtitleTextColor设置副标题文字颜色

  7. app:titleTextAppearance设置 title text 相关属性,如:字体,颜色,大小等等

  8. app:subtitleTextAppearance 设置 subtitle text 相关属性,如:字体,颜色,大小等等

  9. app:logoDescription logo 描述

  10. app:menu 设置menu

  11. android:background Toolbar 背景

  12. android:theme主题

下面简单配置一下。

<androidx.appcompat.widget.Toolbar
    android:id="@+id/main_tb_toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/purple_500"
    app:logo="@mipmap/ic_launcher"
    app:navigationContentDescription=""
    app:navigationIcon="@mipmap/ic_launcher"
    app:subtitle="子标题"
    app:subtitleTextColor="@color/white"
    app:title="标题"
    app:titleMarginStart="90dp"
    app:titleTextColor="@color/white">

</androidx.appcompat.widget.Toolbar>

这样可以通过findViewById查找Toolbar

Toolbar toolbar =  findViewById(R.id.main_tb_toolbar);

如果需要显示菜单(Menu)栏

toolbar.inflateMenu(R.menu.menu);

监听Menu点击事件

@SuppressLint("NonConstantResourceId")
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
    switch (item.getItemId()) {
        case R.id.app_menu_1:
            Toast.makeText(this, getText(R.string.app_menu_1), Toast.LENGTH_SHORT).show();
            return true;
        case R.id.app_menu_2:
            Toast.makeText(this, getText(R.string.app_menu_2), Toast.LENGTH_SHORT).show();
            return true;
        case R.id.app_menu_3:
            Toast.makeText(this, getText(R.string.app_menu_3), Toast.LENGTH_SHORT).show();
            return true;
    }
    return super.onOptionsItemSelected(item);
}

修改title文本属性

虽然有titleTextColor可以设置Title文本的颜色,但文本大小没有直接的方式可以使用,这个需要借用titleTextAppearance和subtitleTextAppearance来修改。

这里以titleTextAppearance为例介绍。

这里引用的是style样式。

app:titleTextAppearance="@style/Toolbar.TitleText"

这个Toolbar.TitleText样式需要自己定义

<style name="Toolbar.TitleText" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
    <item name="android:textSize">30sp</item>
</style>

这样就修改了字体大小。其他属性也可以这样修改

参考文章

  1. android material 模板 安卓material组件

相关文章

暂无评论

none
暂无评论...