自定义ToolBar之一
其实已经有很多大神写过这方面的文章了,不过我比较蠢吧,老有一些地方看不懂的,翻了很多关于Toolbar方面的文章和视频,这儿总结一下。
参考资料:youtube:slidenerd
阶段一 自定义配色
可以修改配色地方-API>=21
Toolbar可以自定义的地方包括:
- 状态栏颜色(Status Bar/colorPrimaryDark)(只在api21及以上有效)
- 标题栏背景颜色(ToolBar/colorPrimary)
- 弹出菜单背景颜色(OptionMenu)
- 内容区域背景颜色(Background)
- 导航栏颜色(NavigationBar)(只在api21及以上有效)
- 标题文字颜色 (TitleBarTextColor/TextColorPrimary)
- 弹出菜单文字颜色(TextColor)
- 内容文字颜色(TextColor)
- 控件颜色(ColorAccent)
原文链接:http://www.jianshu.com/p/91eabe0c326d
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
API<21暂时无法修改status bar和navigation bar的配色<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="primaryColor">#ffeb3b</color>
<color name="primaryColorDark">#fbc02d</color>
<color name="accentColor">#50514f</color>
<color name="textColorPrimary">#33b5e5</color>
<color name="textColorSecondary">#aa66cc</color>
</resources>
在res/layout下新建toolBar.xml作为toolBar布局文件;
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/primaryColor"
</android.support.v7.widget.Toolbar>
- 行1中必须要使用android.support.v7.widget.Toolbar
- 行7设置了内容区域背景颜色
在MainActivity.java中加入以下代码引入toolBar,
---必须import android.support.v7.widget.Toolbar ---:
原文链接:http://www.jianshu.com/p/91eabe0c326d
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
package com.pheynix.material; import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem; public class MainActivity extends ActionBarActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //----------------------以下为添加的代码----------------------
Toolbar toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
//----------------------以上为添加的代码----------------------
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId(); if (id == R.id.action_settings) {
return true;
} return super.onOptionsItemSelected(item);
}
然后我们自定义API<21使用的styles,修改values/styles.xml如下,
<resources>
<style name="AppTheme" parent="MyAppTheme">
</style> <style name="MyAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primaryColor</item>
<item name="colorPrimaryDark">@color/primaryColorDark</item>
<item name="colorAccent">@color/accentColor</item>
</style>
</resources>
---567行name="colorPrimary"而不是name="android:colorPrimary",谁错谁怀孕---
- 行2的style标签是AndroidManifest使用的主题(android:theme),继承自我们自定义的style即可实现对app主题的修改
- 行4的style是我们自定义的style,parent可以定义为:
- parent="Theme.AppCompat.Light"-->白色基调的主题(是这么说的么)
- parent="Theme.AppCompat"-->黑色基调的主题
- parent="Theme.AppCompat.Light.NoActionBar"-->白色基调的主题,并且去掉默认的ActionBar
- parent="Theme.AppCompat.NoActionBar"-->黑色基调的主题,并且去掉默认的ActionBar
- 行5定义了标题栏的颜色,但是并无效果(嗯,并没有什么卵用),标题栏颜色需要在toolBar的布局文件toolBar.xml中定义android:background="@color/colorPrimary"
- 行6用来定义状态栏(statusBar)的颜色
- 行7用来定义控件的颜色
如果需要在API>=21的设备上运行,需要在res文件夹下新建values-21,并新建styles.xml,内容如下:
<resources>
<style name="AppTheme" parent="MyAppTheme">
<item name="android:colorPrimary">@color/primaryColor</item>
<item name="android:colorPrimaryDark">@color/primaryColorDark</item>
<item name="android:colorAccent">@color/accentColor</item>
<item name="android:navigationBarColor">@color/primaryColor</item>
</style>
</resources>
- 行2选择继承我们自定义的MyAppTheme,当然继承values/styles.xml中的行4介绍的parent也是可以的(没有介绍到的也是行的~);
- 行3中定义的标题栏背景色同样不起作用,需要在toolBar的布局文件toolBar.xml中定义android:background="@color/colorPrimary"
- 行5定义导航栏的颜色,导航栏颜色只能在API>=21时生效
标题栏文字颜色和弹出菜单按钮的颜色也是可以自定义的;
如果只是希望设置颜色为黑或者白,只需要在toolBar.xml中改变样式,请看代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/primaryColor"
app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"
app:theme="@style/MyCustomToolBarStyle">
</android.support.v7.widget.Toolbar>
- 行8设置了弹出菜单样式,值可以选择系统提供的:
- @style/ThemeOverlay.Appcompat.Dark-->黑底白字
- @style/ThemeOverlay.Appcompat.Light-->白底黑字
- 行9设置了标题栏样式,值可以选择系统提供的:
- @style/ThemeOverlay.Appcompat.Dark-->黑底白字
- @style/ThemeOverlay.Appcompat.Light-->白底黑字
不过由于前面在toolBar.xml中设置了background的属性,标题栏的底色是不是因为这里的设置而变化;
如果想设置更丰富的字体颜色,可以在values/styles.xml中添加自定义样式,然后在toolBar.xml中修改app:popupTheme和app:theme的值
在styles.xml中添加一个<style>标签:
<style name="MyCustomToolBarStyle" parent="ThemeOverlay.AppCompat.Light">
<item name="android:textColorPrimary">@color/textColorPrimary</item>
<item name="android:textColorSecondary">@color/textColorSecondary</item>
<item name=""android:textColor">@color/textColorSecondary</item>
</style>
- 行2用来定义标题栏文字颜色
- 行3用来定义弹出菜单icon的颜色(竖着排列的那三个点)
行4用来定义弹出菜单OptionMenu文字的颜色
修改toolBar.xmlapp:popupTheme="@style/MyCustomToolBarStyle"
app:theme="@style/MyCustomToolBarStyle"
阶段一 自定义配色就这么多啦,我去睡觉了~
什么?!你说内容文字的颜色怎么设置?呐...
<TextView
android:textColor="#ffac00"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_world" />
原文链接:http://www.jianshu.com/p/91eabe0c326d
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
自定义ToolBar之一的更多相关文章
- 如何解决自定义ToolBar起始位置的空格(左对齐)问题
最近在做项目的时候,与到自定义toolbar的问题,自定义toolbar布局之类的并不是很难,但是自定义布局完成之后,控件总是无法左对齐,这极大的影响了App的美观. 结果谷歌后在Stack Over ...
- 商城项目实战 | 2.2 Android 仿京东商城——自定义 Toolbar (二)
本文为菜鸟窝作者刘婷的连载."商城项目实战"系列来聊聊仿"京东淘宝的购物商城"如何实现. 上一篇文章<商城项目实战 | 2.1 Android 仿京东商城 ...
- 自定义ToolBar
一.Toolbar的简介 Toolbar 是 android 5.0 引入的一个新控件,Toolbar出现之前,我们很多时候都是使用ActionBar以及ActionActivity实现顶部导航栏的, ...
- 去除自定义Toolbar中左边距
问题 自定义Toolbar之后,发现左侧不能完全填充,总是留一点空白,如下图: 原因 查看Wiget.AppCompat.Toolbar的parent(Toolbar默认的style),如下: < ...
- Android 自定义ToolBar详细使用
自定义xml设置ToolBar,通过menu文件扩展选项,通过继承baseactivity使用 1.ToolBar布局 <?xml version="1.0" encodin ...
- JqGrid自定义toolbar
1.设置toolbar参数为[true,"top"],其意思是toolbar显示在Grid顶部,且其id为t_+Grid的id.e.g.: Grid的id为myGrid,toolb ...
- 商城项目实战 | 2.1 Android 仿京东商城——自定义 Toolbar (一)
前言 本文为菜鸟窝作者刘婷的连载."商城项目实战"系列来聊聊仿"京东淘宝的购物商城"如何实现. 现在很多的 APP 里面都有自己的自定义风格,特别是京东商城中自 ...
- Android之ToolBar和自定义ToolBar实现沉浸式状态栏
沉浸式状态栏确切的说应该叫做透明状态栏.一般情况下,状态栏的底色都为黑色,而沉浸式状态栏则是把状态栏设置为透明或者半透明. 沉浸式状态栏是从android Kitkat(Android 4.4)开始出 ...
- UEditor自定义toolbar工具条
使用ueditor的同学都知道,ueditor里有很多功能,很全面,但有时候我们的编辑器不需要太多的功能,比如前台评论或者留言,就不需要这么多功能了,那我们怎么去定制自己想要的工具呢?官方给出了两个方 ...
随机推荐
- "当前方法的代码已经过优化,无法计算表达式的值"的这个错误的解决方案!!!
http://blog.useasp.net/archive/2012/09/12/how-to-debug-dotnet-framework-source-when-throw-the-code-o ...
- ASP页面-自动取回数据库中的值生成导航。
以下为自己总结的一点经验,简单的介绍一下方法,如发现有误,请帮忙指正,谢谢. 一,首先定义调用据库. <% dim objconn,objconnstr set objconn=server.c ...
- winServer2003除默认端口外的其他端口只能本地访问,关闭防火墙即可
winServer2003除默认端口外的其他端口只能本地访问,关闭防火墙即可
- Ubuntu 14 修改默认打开方式
通过研究,有三种修改方式. 方式一: 修改路径:右上角“系统设置” -> 详细信息 -> 默认应用程序 但是,有个缺陷,可修改的项比较少. 方式二: 例如,修改pdf的打开方式,只要查看任 ...
- 使用APPCAN开发移动应用APP心得
要想使用APPCAN开发移动应用,首先要弄明白什么是APPCAN,APPCAN都具有哪些功能. 1.什么是APPCAN? APPCAN是正益无线公司开发的一套Hybrid混合应用开发平台(AppCan ...
- 再谈select, iocp, epoll,kqueue及各种I/O复用机制
原文:http://blog.csdn.net/shallwake/article/details/5265287 首先,介绍几种常见的I/O模型及其区别,如下: blocking I/O nonbl ...
- [BZOJ1999][codevs1167][Noip2007]Core树网的核
[BZOJ1999][codevs1167][Noip2007]Core树网的核 试题描述 设T=(V, E, W) 是一个无圈且连通的无向图(也称为无根树),每条边带有正整数的权,我们称T为树网(t ...
- Word撤销键(Ctrl+z)无效的解决方法
最近翻译一本新书,Word2013用的较多,于是发现了一个奇怪的问题,撤销按钮一直是灰色.编辑的时候闪一下,又变为灰色.按Ctrl-Z也同样不管用.中文资源里面的解决方法都是用winword.exe ...
- centos 修改DNS,网关,IP地址
1.CentOS 修改DNS 修改对应网卡的DNS的配置文件 # vi /etc/resolv.conf 修改以下内容 nameserver 8.8.8.8 #google域名服务器 nameser ...
- Windows 10磁盘占用100%解决办法
开机后磁盘占用高,是因为 windows 10 默认启用了 superfetch 服务. 这个服务的主要功能是加快程序的启动速度.开机以后,系统将那些经常使用的程序,预先从硬盘加载到内存中,这样, ...