关于Toolbar和ActionBar的一些坑

最近开发用到了ToolBar和ActionBar,遇到一些坑,这里做一个简单的记录:

1.使用ToolBar替换ActionBar:
首先定义一个ToolBar布局

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        app:theme="@style/ToolbarTheme"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        android:minHeight="@dimen/comm_tool_bar_height"
        android:title="@string/app_name"
        app:layout_scrollFlags="scroll"
        app:titleTextColor="@color/colorPureWhite" />

将该布局放到布局文件中设置一个id,然后在Activity中获取Toolbar,并调用

setSupportActionBar(mToolbar);

注意:如果要修改ToolBar的标题等属性,需要在setSupportActionBar(mToolbar)方法之前执行,只有在setSupportActionBar(mToolbar)方法调用之后这个修改才生效;

2. 添加菜单:
首先写一个menu xml文件:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".main.MainActivity">

    <item
        android:id="@+id/action_user"
        android:icon="@drawable/btn_actionbar_user"
        android:orderInCategory="1"
        android:title="@string/user"
        app:showAsAction="always" />

    <item
        android:id="@+id/action_more"
        android:icon="@drawable/btn_actionbar_more"
        android:orderInCategory="1"
        android:title="@string/more"
        app:showAsAction="always" />
</menu>

然后重写Activity的两个方法:(主要以下代码注释的内容)

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //这里要使用getMenuInflateter获取Inflater,不能使用new的方法new一个Inflate实例
        getMenuInflater().inflate(R.menu.***, menu);
        //这里要返回true才会显示菜单
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        //返回true表示消耗事件
        return true;
    }

3.修改menu字体大小和颜色:
给Toolbar布局添加一个

app:theme="@style/ToolbarTheme"

然后定义一个style文件:

<style name="ToolbarTheme" parent="AppTheme">
        <item name="actionMenuTextColor">@color/colorPureWhite</item>   <!--设置颜色-->
        <item name="android:textSize">@dimen/big_txt_size</item>        <!--设置字体大小-->
    </style>

注意:这里有几个坑要注意,要有个parent,然后actionMenuTextColor前面不能有android前缀,但是在values-v21/styles.xml里是需要添加android前缀的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值