📌  相关文章
📜  android.support.v7.widget.toolbar (1)

📅  最后修改于: 2023-12-03 15:13:22.269000             🧑  作者: Mango

Android.support.v7.widget.toolbar

android.support.v7.widget.Toolbar是一个可替代传统的ActionBar的控件,它提供了更大的自定义灵活性和更多的功能。

特点
  • 可以放置在Activity、Fragment或任何ViewGroup中
  • 可以容纳任何View,可以和其他View协同工作
  • 可以滚动并放置在CollapsingToolbarLayout中
  • 支持多种样式和主题
  • 支持设置Logo、Title、Subtitle、Menu、Navigation(返回)等
  • 自定义时使用简单
使用步骤
  1. 添加依赖
dependencies {
    ...
    implementation 'com.android.support:appcompat-v7:28.0.0'
}
  1. 在XML布局中添加Toolbar控件
<android.support.v7.widget.Toolbar
    android:id="@+id/my_toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/colorPrimary"
    android:titleTextColor="@color/white"
    android:elevation="4dp" />
  1. 在Activity中设置Toolbar为ActionBar
public class MainActivity extends AppCompatActivity {

    private Toolbar mToolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 找到Toolbar控件
        mToolbar = findViewById(R.id.my_toolbar);

        // 设置Toolbar为ActionBar
        setSupportActionBar(mToolbar);

        // 显示返回箭头
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }

    // 监听返回箭头的点击事件
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                finish();
                return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
样式和主题

可以通过设置样式和主题来自定义Toolbar的外观和行为。

样式
<style name="MyToolbarStyle" parent="@style/Widget.AppCompat.Toolbar">
    <item name="android:background">@color/colorPrimary</item>
    <item name="android:titleTextColor">@color/white</item>
    <item name="titleTextAppearance">@style/MyTitleTextAppearance</item>
</style>

<style name="MyTitleTextAppearance">
    <item name="android:textColor">@color/white</item>
    <item name="android:textStyle">bold</item>
</style>

在ToolBar控件中设置style属性即可。

<android.support.v7.widget.Toolbar
    android:id="@+id/my_toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    style="@style/MyToolbarStyle" />
主题
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    <item name="toolbarStyle">@style/MyToolbarStyle</item>
</style>

在App的theme中设置toolbarStyle属性即可。

<application
    android:name=".MyApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    ...
</application>
参考资料