【Android】ToolBar使用浅谈

本人小白,本文只为记录,点点滴滴,一路成长。

ToolBar的使用方式:

 <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorAccent"
        android:minHeight="?attr/actionBarSize" />

效果:


13652146-47b1896cbf00c9bb.png
1.png

带返回按钮的ToolBar:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

效果:


13652146-9045650d8d80a237.png
2.png

带右侧按钮的ToolBar:
1:在res下新建menu文件夹
2:在menu下新建test_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:icon="@mipmap/ic_launcher"
        android:id="@+id/tv_test"
        android:title="测试按钮" />

</menu>

3:在activity中实现

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.test_menu, menu);
        return true;
    }

效果:


13652146-f53b50fdd8421f65.png
4.png
13652146-61663cc1801df0b4.png
3.png

修改popupMenu样式:

  <style name="ToolBarPopupThem" parent="Widget.AppCompat.Light.PopupMenu.Overflow">
        <!-- 设置popupMenu背景颜色-->
        <item name="android:colorBackground">@color/colorPrimary</item>
        <!--设置popupMenu弹出位置不覆盖toolbar -->
        <item name="overlapAnchor">false</item>
        <!-- 修改字体大小 -->
        <item name="android:textSize">15sp</item>
        <!-- 修改字体颜色 -->
        <item name="android:textColor">#fff</item>
    </style>

在ToolBar的xml中添加:app:popupTheme="@style/ToolBarPopupThem"

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        app:popupTheme="@style/ToolBarPopupThem"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorAccent"
        android:minHeight="?attr/actionBarSize" />

效果:


13652146-b1bbe6ebf816696a.png
5.png

ps:其实还是有一点点覆盖在ToolBar上,暂时还没找到解决方法。

既然popupMenu的字体和颜色可以修改,那ToolBar上的字体颜色是否可以修改?图标是不是也可以改?

修改Toobar字体和图标颜色:

在AndroidManifest.xml中找到:android:theme="@style/AppTheme"

 <application
              ........
              android:theme="@style/AppTheme">

在AppTheme中添加一下代码:

<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <!-- 修改toolbar图标的颜色-->
        <item name="android:textColorSecondary">#ffffff</item>
        <!--修改toolbar文字颜色-->
        <item name="android:textColorPrimary">#ffffff</item>
 </style>

效果:可以看到全部变成了白色


13652146-58f327a13787779d.png
6.png

修改ToolBar左右图标:

左边图标修改:

toolbar.setNavigationIcon(android.R.drawable.ic_menu_delete);

右边三个点修改:

1:代码中修改:

toolbar.setOverflowIcon(getResources().getDrawable(android.R.drawable.ic_menu_more));

2:style中修改

 <style name="ToolbarOverflow" parent="@android:style/Widget.ActionButton.Overflow">
        <item name="android:src">@android:drawable/ic_notification_clear_all</item>
    </style>
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
        ...
        <item name="actionOverflowButtonStyle">@style/ToolbarOverflow</item>
    </style>

效果:


13652146-de854a15cc6166ed.png
7.png

解决popupMenu中图标不显示:在activity实现该方法,具体原因不知,度娘提供。

@SuppressLint("RestrictedApi")
    @Override
    protected boolean onPrepareOptionsPanel(View view, Menu menu) {
        if (menu != null) {
            if (menu.getClass() == MenuBuilder.class) {
                try {
                    //利用反射获取私有方法
                    Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
                    m.setAccessible(true);
                    m.invoke(menu, true);
                } catch (Exception e) {
                    e.printStackTrace();
                    Log.e(TAG, e.toString());
                }
            }
        }
        return super.onPrepareOptionsPanel(view, menu);
    }

效果:


13652146-e438d4037cbd7cdc.png
8.png

自定义ToolBar:

 private void init(Context context) {
        mContext = context;
        mTitle = new TextView(context);
        Toolbar.LayoutParams lp = new Toolbar.LayoutParams(Toolbar.LayoutParams.WRAP_CONTENT, Toolbar.LayoutParams.WRAP_CONTENT);
        lp.gravity = Gravity.CENTER;
        mTitle.setLayoutParams(lp);
        this.addView(mTitle);
        this.setTitle("");
    }
 toolbar.setToolBarTitle("测试ToolBar");
        toolbar.setToolBarLeftIcon(getResources().getDrawable(android.R.drawable.ic_menu_close_clear_cancel));
        toolbar.setToolBarPopupThem(R.style.ToolBarPopupThem);
        toolbar.setToolBarRightIcon(getResources().getDrawable(android.R.drawable.ic_delete));
        toolbar.setToolBarTitleColor(Color.WHITE);
        toolbar.setToolBarTitleSize(20);

效果:


13652146-66b8f308982e1fb4.png
9.png

源码:https://github.com/qylfzy/QToolBar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小二者也

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值