Android Toolbar控件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chennai1101/article/details/82349451

相关文章
Android Snackbar控件
Android FloatingActionButton控件
Android Toolbar控件
Android AppBarLayout控件
Android CollapsingToolbarLayout控件

1. Toolbar类

Toolbar是替代ActionBar的产物,低版本可以使用v7兼容包,使用Theme.AppCompat主题,并添加配置。

<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>

2. Toolbar配置

主要属性,

  • navigationIcon,设置导航栏图标
  • logo,设置logo
  • title,设置标题
  • subtitle,设置副标题
  • background,设置背景

Toolbar还可以设置自定义子视图,

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    app:navigationIcon="@drawable/nav_back"
    app:logo="@mipmap/ic_launcher_round"
    app:title="标题"
    app:subtitle="副标题"
    app:titleMarginStart="20dp"
    android:background="@color/colorPrimary">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Title"
        android:textSize="16sp"
        android:textColor="@color/red"/>

</android.support.v7.widget.Toolbar>

3. 添加菜单

Activity需要继承AppCompatActivity,并调用setSupportActionBar()方法。

public clas ToolbarActivity extends AppCompatActivity {

    private Toolbar toolbar;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_toolbar);

        toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
	}
}

在menu目录下添加menu_toolbar.xml文件

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/item_faq"
        android:icon="@drawable/nav_faq"
        android:title="问题"
        app:showAsAction="always" />
    <item
        android:id="@+id/item_more"
        android:icon="@drawable/nav_more"
        android:title="添加"
        app:showAsAction="never" />
    <item
        android:id="@+id/item_setting"
        android:icon="@drawable/nav_setting"
        android:title="设置"
        app:showAsAction="never" />

</menu>

在代码中添加Menu,并设置点击事件

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_toolbar, menu);

    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == R.id.item_faq) {
        Toast.makeText(this, "Faq", Toast.LENGTH_SHORT).show();
    } else if (item.getItemId() == R.id.item_more) {
        Toast.makeText(this, "More", Toast.LENGTH_SHORT).show();
    } else if (item.getItemId() == R.id.item_setting) {
        Toast.makeText(this, "Setting", Toast.LENGTH_SHORT).show();
    }
    return true;
}

效果如下
这里写图片描述

4. 代码设置

Toolbar也提供了很多set方法,

  • setNavigationIcon(int resId),设置导航栏图标
  • setNavigationOnClickListener(OnClickListener listener),设置导航栏监听事件
  • setLogo(int resId),设置logo
  • setTitle(int resId),设置标题
  • setTitle(CharSequence title),设置标题
  • setSubtitle(int resId),设置副标题
  • setSubtitle(CharSequence subtitle),设置副标题
  • setBackgroundColor(int color),设置背景
  • setBackgroundResource(int resid),设置背景
  • setOverflowIcon(Drawable icon),设置菜单按钮样式

这里写图片描述

5. 修改菜单样式

设置Toolbar的popupTheme属性,修改下拉框样式

app:popupTheme="@style/AppTheme.OverFlowMenu"

在style.xml中,添加AppTheme.OverFlowMenu

<style name="AppTheme.OverFlowMenu" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
	<!-- 是否覆盖锚点,默认为true,即盖住Toolbar -->
    <item name="overlapAnchor">false</item>
</style>

猜你喜欢

转载自blog.csdn.net/chennai1101/article/details/82349451