Android Toolbar控件

1. Toolbar类

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

<item name="windowActionBar">false</item>
<item name="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(Toolbar)方法。

public clas ToolbarActivity extends AppCompatActivity {

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

        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_add"
        android:icon="@drawable/nav_add"
        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_add) {
        Toast.makeText(this, "Add", 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. 修改菜单样式

设置ToolbarpopupTheme属性,修改下拉框样式

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>
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值