Toolbar使用总结

概述:

Toolbar使用了一段时间,中间也遇到了不少的问题,也查找了不少资料和博客,在这里做一个总结,方便以后查找。

具体使用:

因为Toolbar是为了替代Actionbar而新出的控件,所以为了兼容低版本,一般是使用v7包中的android.support.v7.widget.Toolbar。然后设置程序的主题样式,在style里先把actionBar去掉。具体如下:

<style name="AppTheme" parent="Theme.AppCompat.DayNight">
    <!--标题栏的颜色-->
    <item name="colorPrimary">@color/colorPrimary</item>
    <!--状态栏的颜色-->
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <!--导航栏上的标题颜色-->
    <item name="textColorPrimary">@color/colorPrimary</item>
    <!--Activity窗口的颜色-->
    <item name="windowBackground">@color/material_blue_grey_800</item>
    <!--控件的选中颜色,即checked或selected状态的颜色。-->
    <item name="colorAccent">@color/colorAccent</item>
    <!--和 colorAccent相反,正常状态下按钮的颜色-->
    <item name="colorControlNormal">#ff0000</item>
    <!--Button按钮正常状态颜色-->
    <item name="colorButtonNormal">@color/accent_material_light</item>
    <!--EditText 输入框中字体的颜色-->
    <item name="editTextColor">@android:color/white</item>
</style>

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

具体代表的可以参考下图:

以上是对项目整体的设置,这里可以对Toolbar做一些定制修改,比如右上角的那个图标修改一下,弹出的更多的条目的样式与位置都可以设置。

Toolbar 上menu设置,首先在menu目录下新建menu_main.xml文件

<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=".MainActivity" >
    <item
        android:id="@+id/action_search"
        android:orderInCategory="80"
        android:title="action_search"
        android:icon="@drawable/abc_ic_search_api_mtrl_alpha"
        app:showAsAction="ifRoom"/>

    <item
        android:id="@+id/action_login"
        android:title="@string/menu_main_please_login"
        android:icon="@drawable/home_menu_0"
        app:showAsAction="never" />

    <item
        android:id="@+id/action_my_message"
        android:title="@string/menu_main_my_message"
        android:icon="@drawable/home_menu_1"
        app:showAsAction="never" />
</menu>
在Activity中设置

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(getLayoutId());
    setSupportActionBar(tool);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}
// 点击Menu的处理方法
public boolean onOptionsItemSelected(MenuItem item){
	
}
Toolbar上Menu样式设置 在布局文件中设置 android:theme="@style/Theme.ToolBar.Menu"

<style name="Theme.ToolBar.Menu" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <!-- 设置-弹窗的背景-颜色-->
    <item name="android:colorBackground">@color/common_bg</item>
    <!-- 字体的颜色-->
    <item name="android:textColor">@color/common_h1</item>
    <!-- 字体大小-->
    <item name="android:textSize">16sp</item>
    <!-- 用于替换菜单的三个小白点,换成自已的图片-->
    <item name="actionOverflowButtonStyle">@style/ActionButton.Overflow.Menu</item>
    <!--用于控制menu弹出的位置,位于toolbar的下面,而不是上面-->
    <item name="actionOverflowMenuStyle">@style/OverflowMenuStyle</item>
    <!-- 用于修改item默认的分割线-->
    <item name="android:dropDownListViewStyle">@style/dropDownStyle</item>
    <item name="dropDownListViewStyle">@style/dropDownStyle</item>
</style>

<style name="ActionButton.Overflow.Menu" parent="android:style/Widget.Holo.Light.ActionButton.Overflow">
    <item name="android:src">@drawable/icon_plus</item>
</style>

<style name="OverflowMenuStyle" parent="Widget.AppCompat.Light.PopupMenu.Overflow">
    <!--把该属性改为false即可使menu位置位于toolbar之下-->
    <item name="overlapAnchor">false</item>
    <!--弹框水平方向右边的距离-->
    <item name="dropDownHorizontalOffset">5dp</item>
    <!--弹框竖直方向上边的距离-->
    <item name="android:dropDownVerticalOffset">5dp</item>
</style>

<!--用于修改popmenu的分割线-->
<style name="dropDownStyle" parent="android:style/Widget.Holo.ListView.DropDown">
    <item name="android:listSelector">@drawable/touch_bg</item>
    <item name="android:divider">@color/common_divider_narrow</item>
    <item name="android:dividerHeight">0.5dp</item>
</style>

以上就是Toolbar的使用总结了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值