Toolbar修改MenuItem字体颜色及布局

一、style方式

<style name="ToolBarStyle" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="actionMenuTextColor">@android:color/white</item> <!--  敲定颜色-->
    <item name="android:textSize">15sp</item> <!--  搞掂字体大小-->
    <item name="android:textStyle">normal</item>
</style>

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    android:minHeight="?attr/actionBarSize"
    app:colorControlNormal="@android:color/white"
    app:navigationIcon="@drawable/back"
    app:theme="@style/ToolBarStyle">

二、ActionProvider方式(方式1一般写完之后全局都变了,如果需要动态更换或者个别地方更改则可以使用该方式)

public class MainActionProvider extends ActionProvider {


    TextView tvTitle;

    View.OnClickListener clickListener;


    public MainActionProvider(Context context) {
        super(context);
    }

    @Override
    public View onCreateActionView() {
        Log.e("toolbar-menu", "onCreateActionView");
        tvTitle = new TextView(getContext());
        ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.MATCH_PARENT);
        tvTitle.setLayoutParams(params);
        tvTitle.setGravity(Gravity.CENTER);
        tvTitle.setPadding(DensityUtils.dp2px(getContext(),10),0,DensityUtils.dp2px(getContext(),10),0);
        tvTitle.setText(R.string.exit);
        tvTitle.setBackgroundResource(R.drawable.half_translucent_selector);
        tvTitle.setTextColor(BSSUtils.getColor(R.color.red_exit));
        tvTitle.setOnClickListener(clickListener);


        return tvTitle;//或者自己写的布局inflate为View
    }


    @Override
    public void onPrepareSubMenu(SubMenu subMenu) {

    }

    @Override
    public boolean hasSubMenu() {
        return true;
    }

    public void setonClickListener(View.OnClickListener listener){
        clickListener = listener;
    }

    public void setTvTitle(String title){
        tvTitle.setText(title);
    }

}

在Activity中添加如下代码

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_menu, menu);
        mLogoutMenuItem = menu.findItem(R.id.logout);
        mLogoutMenuItem.setVisible(false);
//        mLogoutMenuItem.getActionView();
        MainActionProvider actionProvider = (MainActionProvider) MenuItemCompat.getActionProvider(mLogoutMenuItem);
        actionProvider.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //点击事件
            }
        });
        return true;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        return super.onCreateOptionsMenu(menu);
    }

参考:http://blog.csdn.net/u011102153/article/details/53072105

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值