ToolBar详解
来源:互联网 发布:ubuntu vim配置文件 编辑:程序博客网 时间:2024/06/05 16:52
ToolBar详解
一 集成
1 添加v7包 compile 'com.android.support:appcompat-v7:25.3.1'
2 隐藏掉ActionBar 显示ToolBar 更改主题
更改 清单文件 appliCation里的 @style/AppTheme 去掉ActionBar
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style>
item等下详细解释具体控制哪块的颜色
注:ToolBar其实是一个ViewGroup 可以存放子View
为了兼容5.0以下版本 引入新命名空间 xmlns:app="http://schemas.android.com/apk/res-auto" 使用app:的属性 否则使用android在xml设置的属性添加的控件无效
<FrameLayout 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" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.wbxu.mymaterialdemo.MainActivity"> <android.support.v7.widget.Toolbar android:id="@+id/toolBar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" > <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </android.support.v7.widget.Toolbar></FrameLayout>
由于开始去掉ActionBar然后整体使用浅色系主题,,toolBar上的元素会自动使用深色系 来与主题颜色分开,,比如下边的标题颜色变黑,,所以单独将Toolbar的主题改为深色系 然后单独将toolbar上的menu菜单 设置成浅色系即可
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
如果不更改toolbar的主题 这样显示的ToolBar中的字体是黑色的
二更改toolBar中的颜色 先看一张style 主题里的item的控制界面各部分 颜色的方法
解释: colorPrimaryDark(状态栏底色):在风格 (styles) 或是主题 (themes) 里进行设定。
colorPrimary 标题栏【toolbar或者actionbar的颜色】 如果是toolbar 在主题里的style里设置 再供toolbar的背景色调用 如下
<resources> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">#2e8abb</item> <!--浅蓝色--> <item name="colorPrimaryDark">#3A5FCD</item> <!--深蓝色--> </style></resources>
android:background="?attr/colorPrimary"如果是actionBar的话 则直接在风格 (styles) 或是主题 (themes) 里进行设定 colorPrimary 参数即可;
navigationBarColor(导航栏底色): 底部导航栏的颜色 手机的主键 回退键等等
textColorPrimary 指定默认的label自带标题的颜色
还有个colorAccent指定app的悬浮窗的颜色 也设置被选中时的颜色
更改toolBar颜色前 先在主题里设置颜色 供toolbar的 background调用
三 toolBar上的元素添加
setNavigationIcon 即设定 up button 的图标,因为 Material 的介面,在 Toolbar这里的 up button样式也就有別于过去的 ActionBar 哦。
setLogo APP 的图标。
setTitle 主标题。
setSubtitle 副标题。
setOnMenuItemClickListener 设定菜单各按鈕的动作。
setLogo APP 的图标。
setTitle 主标题。
setSubtitle 副标题。
setOnMenuItemClickListener 设定菜单各按鈕的动作。
使用:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);// App Logotoolbar.setLogo(R.drawable.ic_launcher);// Titletoolbar.setTitle("My Title");// Sub Titletoolbar.setSubtitle("Sub title");setSupportActionBar(toolbar);// Navigation Icon 要設定在 setSupoortActionBar 才有作用// 否則會出現 back buttontoolbar.setNavigationIcon(R.drawable.ab_android);
注意:setNavigationIcon需要放在 setSupportActionBar之后才会生效。
给Up Button 添加点击事件
//要放在setSupportActionBar之后才会生效 toolbar.setNavigationIcon(R.mipmap.ic_launcher); //设置点击事件 toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "导航栏click", Toast.LENGTH_SHORT).show(); } });
如果想更改标题的颜色大小 子标题的颜色和大小
可以调用setTitleTextColor、setTitleTextAppearance、setSubtitleTextColor、setSubtitleTextAppearance 这些API;
四设置menu
创建menu的资源文件 res/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_edit" android:title="@string/action_edit" android:orderInCategory="80" android:icon="@drawable/ab_edit" app:showAsAction="always" /> <item android:id="@+id/action_share" android:title="@string/action_edit" android:orderInCategory="90" android:icon="@drawable/ab_share" app:showAsAction="ifRoom" /> <item android:id="@+id/action_settings" android:title="@string/action_settings" android:orderInCategory="100" app:showAsAction="never"/></menu>
其中showAsAction 是控制menu的显示位置
always是永远显示在toolBar中 ifRoom是屏幕空间足够的情况下显示在toolBar中 不够就显示在菜单中 never一直显示在菜单中
withText:使菜单项和它的图标,菜单文本一起显示。
如果显示在toolbar中只显示图标 而显示在菜单中只显示文字
应用菜单布局在main
//创建菜单的布局 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.toolbar, menu); return true; }
.监听菜单点击
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.one: Toast.makeText(this, "第一个按钮", Toast.LENGTH_SHORT).show(); break; case R.id.two: Toast.makeText(this, "第二个按钮", Toast.LENGTH_SHORT).show(); break; case R.id.three: Toast.makeText(this, "第三个按钮", Toast.LENGTH_SHORT).show(); break; } return true; }
直接运行 点击菜单按钮会遮挡toolbar
在自定义的popupMenu的style里重新 设置
<style name="ToolbarPopupTheme" parent="@style/ThemeOverlay.AppCompat.Light"> <item name="android:colorBackground">#ffff</item> <!--新增一个item,用于控制menu弹出的位置--> <item name="actionOverflowMenuStyle">@style/OverflowMenuStyle</item>
<!--新增一个item,用于更改menu菜单的文字颜色和大小--> <item name="android:textColor">#000ddd</item> <item name="android:textSize">10dp</item> </style> <style name="OverflowMenuStyle" parent="Widget.AppCompat.Light.PopupMenu.Overflow"> <item name="overlapAnchor">false</item> <!--把该属性改为false即可使menu位置位于toolbar之下--> </style>然后重新设置到toolBar的布局中
app:popupTheme="@style/ToolbarPopupTheme"
五 不在toolbar里添加view动态更改toolBar的标题
在mainActivity的oncreate的方法里 设置title toolbar.setTitle("title"); //给toolBar设置标题内容 总会被清单application的label覆盖
解决办法:
/** * 解决在OnCreat里给toolBar设置标题被清单的label覆盖 */ @Override public void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); //Toolbar 必须在onCreate()之后设置标题文本,否则默认标签将覆盖我们的设置 if (toolbar != null) { toolbar.setTitle("零钱"); //给toolBar设置标题内容 toolbar.setSubtitle("微信安全支付");//给toolbar设置子标题 } }
阅读全文
0 0
- ToolBar详解
- Toolbar详解
- toolbar详解
- ToolBar详解
- ToolBar详解
- toolbar详解
- android:ToolBar详解
- android:ToolBar详解
- android:ToolBar详解
- Android toolBar详解
- Toolbar使用详解
- android:ToolBar详解
- android:ToolBar详解
- android:ToolBar详解
- Android ToolBar详解
- android:ToolBar详解
- android:ToolBar详解
- android:ToolBar详解
- Struts2类型转换和自定义类型
- BZOJ 4926 皮皮妖的递推
- 417. Pacific Atlantic Water Flow
- MyBatis Generator实战
- Android之Glide获取图片Path和Glide获取图片Bitmap
- ToolBar详解
- 深入剖析Android音频(四)AudioTrack
- html5shiv脚本的功能及使用
- 打印 导出 导入
- yarn设置淘宝镜像问题 亲测成功
- LeetCode 57. Insert Interval
- 工作安排(网易2017春招笔试题)
- GO-log日志封装
- Ubuntu源码编译redis-3.2.9