Toolbar 引入使用
xml布局中加入
#434343
android:id="@+id/tool_bar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="@color/weixin_bg"
android:theme="@style/AppTheme.ToolBar"
app:title="@string/app_name"/>
主题改为隐藏ActionBar:
@color/colorPrimary
@color/weixin_bg
@color/colorAccent
Activity代码中加入:
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ToolBar 样式:
@android:color/white
@android:color/white
@style/ActionButton.Overflow
false
@color/weixin_bg
@android:color/white
0dp
0dp
@drawable/actionbar_add_icon
解决菜单Menu添加Icon无效问题,让菜单同时显示图标和文字
在使用过程中发现溢出菜单menu 只显示文字不显示图标:使用反射,要重写一个onMenuOpened()方法即可解决。
/**
* 利用反射机制调用MenuBuilder的setOptionalIconsVisible方法设置mOptionalIconsVisible为true,
* 给菜单设置图标时才可见 让菜单同时显示图标和文字
*/
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
if (menu != null) {
if (menu.getClass().getSimpleName().equalsIgnoreCase("MenuBuilder")) {
try {
Method method = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
method.setAccessible(true);
method.invoke(menu, true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
return super.onMenuOpened(featureId, menu);
}
ToolBar 属性设置
添加背景色:
#434343
android:background="@color/weixin_bg"
基本属性设置
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
app:navigationIcon="@mipmap/title_bar_back"//左侧图标
app:subtitle="子标题"
app:subtitleTextColor="#fff" //子标题颜色
app:title="标题"
app:titleTextColor="#fff"/> //标题颜色
添加选项菜单menu
创建menu
xmlns:app="http://schemas.android.com/apk/res-auto">
android:id="@+id/action_search"
android:icon="@drawable/actionbar_search_icon"
android:title="@string/action_search"
app:actionViewClass="android.widget.SearchView"
app:showAsAction="ifRoom|collapseActionView"/>
android:id="@+id/action_group_chat"
android:icon="@drawable/menu_group_chat_icon"
android:title="@string/menu_group_chat"/>
android:id="@+id/action_add_friend"
android:icon="@drawable/menu_add_icon"
android:title="@string/menu_add_friend"/>
android:id="@+id/action_scan"
android:icon="@drawable/men_scan_icon"
android:title="@string/menu_scan"/>
android:id="@+id/action_feedback"
android:icon="@drawable/menu_feedback_icon"
android:title="@string/menu_feedback"/>
showAsAction:属性有五个之:ifRoom、never、always、withText、collapseActionView
ifRoom:如果有空间,就显示出来
never:永远不会显示。只在溢出列表中显示,而且只显示标题
always:无论是否溢出,总会显示
withText:示意ActionBar要显示文本的标题。ActionBar会尽可能的显示这个标题,但是,如果图标有效并且受到ActionBar空间的限制,文本标题就有可能显示不全
collapseActionView:声明了这个操作视窗应该被折叠到一个按钮中,当用户选择这个按钮时,这个操作视窗展开。否则,这个操作视窗在默认的情况下是可见的,并且即便在用于不适用的时候,也要占还有操作栏的有效空间,一般要配合ifRoom一起使用才有效
代码中重写onCreateOptionsMenu方法加载菜单文件
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_menu, menu);
return super.onCreateOptionsMenu(menu);
}
左侧返回箭头
想要显示自带的返回箭头,需要去掉之前设定的属性:
app:navigationIcon="@mipmap/title_bar_back"
然后在代码中添加:
getSupportActionBar().setHomeButtonEnabled(true); //设置返回键可用
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
溢出图标颜色
@android:color/white
自定义右侧溢出图标
@android:color/white
@android:color/white
@style/ActionButton.Overflow
@drawable/actionbar_add_icon
更改弹出菜单背景
@color/weixin_bg
更改弹出菜单文字颜色
@android:color/white
修改标题文字大小
添加配置:
app:titleTextAppearance="@style/ToolbarTitleSize"
添加style:
28sp