使用Toolbar替代老版的ActionBar
时间: 2024-09-18 18:13:33 浏览: 47
使用`Toolbar`替代旧版的`ActionBar`是在Android Lollipop (5.0)及以上版本中推荐的做法,主要是为了更好地支持沉浸式设计(immersive design)。以下是替代过程:
1. **添加`Toolbar`到布局**:
在XML布局文件中,将`<android.support.v7.widget.Toolbar>`添加到布局中,通常作为顶级视图,并给它一个明确的ID,如`@+id/toolbar`。
```xml
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary" />
```
2. **关联`Toolbar`到Activity**:
在Activity的`onCreate()`方法中,找到并初始化`Toolbar`,然后将其与`ActionBar`关联起来。如果使用的是AppCompatActivity,可以这样做:
```java
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true); // 添加HomeAsUp图标
```
3. **自定义内容**:
可以通过`setSupportActionBar()`方法改变标题、图标等信息,并提供额外的功能按钮。
4. **支持沉浸式状态栏**:
需要在主题中启用沉浸式状态栏,添加`fitsSystemWindows="true"`属性,并在需要隐藏标题或导航图标时,手动调用`setElevation()`方法。
```xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- 其他主题样式 -->
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item> <!-- 或者true,取决于需求 -->
<item name="android:windowContentOverlay">@null</item>
<item name="android:elevation">0dp</item>
</style>
```
阅读全文