Android 自定义Activity的主题

一.  前言

当在某个app中做一个新界面时, 我们要考虑一下主题风格相符合一致.

本篇文章讲解的是,如何新创建的Activity 与整个app主题符合,  特别是状态栏的颜色需要和这个app的状态栏颜色保持一致. 

在读本篇文章之前, 可以移步一下笔者之前写的文章:Android style(样式) 和 theme(主题) 属性_broadview_java的博客-CSDN博客_android style文件

可以顺道复习一下基础知识.

二.  定制需求

需求:要定制成状态栏的风格主题为: 灰色背景 + 黑色状态栏图标,来达到全屏显示的风格,该如何实现呢? 我们先来看看效果图

 如果背景为白色,状态栏背景也为白色,这样子屏幕视觉效果显得更大一点.

三.  实现步骤

3.1 首先配置Activity自定义主题

 <activity android:name=".MainActivity"
            android:theme="@style/Theme.TestActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
 </activity>

自定义的主题为:  android:theme="@style/Theme.TestActivity

3.2 在style. xml资源文件中自定义主题

<resources xmlns:tools="http://schemas.android.com/tools">

    <style name="Theme.TestActivity"  parent="Theme.AppCompat.Light.NoActionBar">
        <!--整个界面的背景颜色,配置的是灰色-->
        <item name="android:windowBackground">#FFDCDCDC</item>
        <!--状态栏配置的是白色-->
        <item name="android:statusBarColor">@android:color/white</item>
        <item name="android:windowTranslucentStatus">false</item>
        <item name="android:windowTranslucentNavigation">false</item>
    </style>

</resources>

这里要重点说明

1. style的parent 我们配置的是 Theme.AppCompat.Light.NoActionBar

2. android:windowTranslucentStatus 我们需要配置成false

如果配置为true的话,状态栏会显示成半透明状态,在实际显示的效果就是灰色的背景,

灰色的图标, 具体原理可以查看这篇文章:Android windowTranslucentStatus属性源码分析_QQxiaoqiang1573的博客-CSDN博客_android windowtranslucentstatus

3.3 设置状态栏为亮色模式

在Activity的 onCreate()方法中再加上这句话:

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}

这段话可以这样通俗易懂的理解:就是设置状态栏为亮色模式(状态栏图标和文字变成黑色)

四.  总结

上面的3个步骤实现代码按照配置即可,状态栏的颜色可以自定义, 整个界面的背景色也可以自定义, 这样子就可以实现自定义的activity的主题了

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值