ToolBar详解和沉浸式的实现

本文详细介绍了Android中的Toolbar,包括其详解、自定义实现、沉浸式状态栏的设置,以及针对Android 6.0及以上版本的权限获取方法。通过示例代码和步骤解析,展示了如何创建自定义Toolbar、实现沉浸式效果,并讲解了6.0权限管理的机制和动态申请权限的流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Toolbar的实现

此次的笔记的目的:

Toolbar的简介:

  1. 一: 单独的toolbar详解和布局
  2. 二: 使用 include 和 viewstub来加载
  3. 三: 自定义Toolbar的实现
  4. 四: 沉浸式的实现
  5. 五: 基于6.0权限的获取
  6. 本片涉及到沉浸式,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支持包:

图片展示如下:

本地的v7包

接着我们在as中切换到project视图下面:

在 External Libraries会看到我们依赖的jar包等:

查看v7包的图片展示:

as查看依赖的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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值