ActionBar 和 Toolbar

1 基本概念和历史背景

1.1 ActionBar(Android 3.0 原生支持)

Android 3.0 引入原生顶部导航栏,提供标题、导航按钮、操作按钮等功能。集成方式依赖 Activity 的 setActionBar() 方法:

局限性:

  • 样式和布局定制性低,只能固定在顶部,无法满足复杂的设计需求;
  • 在 Android 5.0(Lollipop)后逐渐被 Toolbar 替代;

默认配置:

themes.xml 文件:

xml 复制代码
<resources xmlns:tools="http://schemas.android.com/tools">

    <style name="SuperUI" parent="Theme.Material3.DayNight">

    </style>

</resources>

在清单文件中配置主题:

xml 复制代码
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/SuperUI">
  	
  	......

</application>
1.2 Toolbar(Android 5.0+ 推荐方案)

作为 ActionBar 的替代品,是 android.appcompat.widget.Toolbar 包中的自定义 View。作为普通的 View 嵌入布局,通过 setSupportActionBar() 关联。

优势:

  • 完全自定义布局(可以在顶部、底部、侧边)、样式、动画和交互逻辑;
  • 支持跨版本兼容(通过 AppCompact 库在低版本系统中使用);

2 Toolbar 的核心用法和示例

2.1 移除 ActionBar 相关的主题属性

themes.xml 文件:

xml 复制代码
<!-- Base application theme. -->
<style name="SuperUI.NoActionBar" parent="Theme.Material3.DayNight.NoActionBar">

</style>

在清单文件中配置:

xml 复制代码
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/SuperUI">
  	
  	......

</application>
2.2 布局集成

在 XML 布局中添加 Toolbar:

xml 复制代码
<androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@android:color/holo_blue_bright"
        android:elevation="4dp"
        android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
2.3 在 Activity 中关联 Toolbar
kotlin 复制代码
class TestActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 获取 Toolbar 实例
        val toolbar = findViewById<Toolbar>(R.id.toolbar)
        // 重点:设置为 ActionBar
        setSupportActionBar(toolbar)

        supportActionBar?.apply {
            title = "主界面"
            subtitle = "欢迎使用"
            setDisplayHomeAsUpEnabled(true) // 显示返回箭头
            setHomeAsUpIndicator(R.drawable.arrow_back) // 自定义返回图标
        }

    }
}
相关推荐
移动开发者1号2 小时前
使用 Android App Bundle 极致压缩应用体积
android·kotlin
移动开发者1号2 小时前
构建高可用线上性能监控体系:从原理到实战
android·kotlin
ii_best7 小时前
按键精灵支持安卓14、15系统,兼容64位环境开发辅助工具
android
美狐美颜sdk7 小时前
跨平台直播美颜SDK集成实录:Android/iOS如何适配贴纸功能
android·人工智能·ios·架构·音视频·美颜sdk·第三方美颜sdk
恋猫de小郭12 小时前
Meta 宣布加入 Kotlin 基金会,将为 Kotlin 和 Android 生态提供全新支持
android·开发语言·ios·kotlin
aqi0012 小时前
FFmpeg开发笔记(七十七)Android的开源音视频剪辑框架RxFFmpeg
android·ffmpeg·音视频·流媒体
androidwork14 小时前
深入解析内存抖动:定位与修复实战(Kotlin版)
android·kotlin
梦天201514 小时前
android核心技术摘要
android
szhangbiao16 小时前
“开发板”类APP如果做屏幕适配
android
高林雨露17 小时前
RecyclerView中跳转到最后一条item并确保它在可视区域内显示
android