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) // 自定义返回图标
}
}
}