Toolbar的实现
此次的笔记的目的:
Toolbar的简介:
- 一: 单独的toolbar详解和布局
- 二: 使用 include 和 viewstub来加载
- 三: 自定义Toolbar的实现
- 四: 沉浸式的实现
- 五: 基于6.0权限的获取
- 本片涉及到沉浸式,demo运行时注意api的版本,后面设计到6.0注意使用api要大于或者=23;
下面的连接地址是自己写的ToolBar的一个project,各种资源都在里面.
https://github.com/NYK1024212458/ToolbarProject
Toolbar 的详解
Toolbar是在在Android5.0之后实现的,使用的时候要添加v7包的依赖
v7包的依赖:
直接在build.gradle中添加:
/*依赖v7包*/
compile 'com.android.support:appcompat-v7:25.3.1'
至于版本: 依赖后不符合会有相应的提示信息来提示:
v7和v4的本地的地址:
D:\develop\AndroidSdk\android-sdk-windows\android-sdk-windows\extras\android\support
其实也就是: 在你使用的sdk的extra下面的android文件夹下面的support支持包:
图片展示如下:
接着我们在as中切换到project视图下面:
在 External Libraries会看到我们依赖的jar包等:
查看v7包的图片展示:
最后在widget文件夹下面我们找到了TOOlbar
来上代码(展示一下子):
`
public class Toolbar extends ViewGroup {
private static final String TAG = "Toolbar";
private ActionMenuView mMenuView;
private TextView mTitleTextView;
private TextView mSubtitleTextView;
private ImageButton mNavButtonView;
private ImageView mLogoView;
..........
};`
使用和创建Toolbar之前我们需要知道:使用的v7包,相应的需要设置appcompat的主题:
相当于是ACtionbar的升级,使用的时候需要设置系统的actionbar和tittlebar的不显示和第三方的actionbar和notittle设置为true
创建一个自己的theme主题
<!--自定义自己的主题目的就是使用 toolbat 第一系统的actionbar和tittlebar还有第三方的-->
<style name="MyToolbartheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!--自定义的一个处理系统toolbar和tittlebar的样式-->
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<!--设置处理第三方的actionbar和toolbar-->
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<!-- Customize your theme here.就是自定义的颜色 -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimary</item>
<item name="colorAccent">@color/colorAccent</item>
<!--设置最顶部的颜色,要求就是api在21 以上,运行的时候注意api的版本-->
<item name="android:colorPrimaryDark">@color/colorAccent</item>
<!--设置的就是默认的窗体的颜色-->
<item name="android:windowBackground">@color/ceshi</item>
</style>
使用自己的toolbar主题:不定义colorprimary会根据Dark的色调,这里你自己定义的coloprimary颜色就是你想要展示的颜色;下面对系统主题里面的颜色进行相应的解释:
colorPrimaryDark是我们手机最顶端的状态栏的背景颜色(改变它需要Android5.0以及以上的手机支持才行)。
colorPrimary是指导航栏的颜色。
colorAccent是指我们常用控件比如Button等的颜色。
textColorPrimary是指我们导航栏中标题的颜色。
windowBackground是指我们窗体的默认颜色。
navigationBarColor是指Android手机中虚拟按键的背景颜色。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kunstudy.toolbardemo">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/MyToolbartheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
在application中使用,会在以后创建的所有的activity中都有效果;如果后面的activity需要其他的主题,在清单文件中声明activity的时候后面再次设置一个主题就ok了!
开始创建独立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:id="@+id/tb_toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/height_toolbar"
android:background="?attr/colorPrimary"
android:minHeight="?actionBarSize"
app:navigationIcon="@mipmap/icon_back"
app:titleTextColor="@color/white">
<TextView
android:id="@+id/tv_toolbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:drawablePadding="@dimen/dist_2"
android:gravity="center"
android:lines="1"
android:textColor="@color/white"
android:textSize="@dimen/textSize_title"/>
<TextView
android:id="@+id/tv_toolbar_right_text"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="right"
android:layout_marginRight="@dimen/dist_10"
android:background="?android:attr