概述:
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中设置
@Overrideprotected 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; }
Toolbar上Menu样式设置 在布局文件中设置 android:theme="@style/Theme.ToolBar.Menu"// 点击Menu的处理方法
public boolean onOptionsItemSelected(MenuItem item){
}
<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的使用总结了。