(AS笔记)Android全透明沉浸式主题样式——顶部状态栏+底部导航栏

目录

  • 1.前言
  • 2.自定义主题theme
  • 3.全透明沉浸式主题theme
  • 4.设置状态栏颜色(Android 5.0+)
  • 5.设置状态栏半透明
  • 6.设置状态栏全透明
  • 7.设置底部导航栏半透明
  • 8.全透明沉浸式主题样式
  • 9.半透明沉浸式主题样式
  • 10.总结


1.前言

        本章介绍实现Android沉浸式主题样式,从状态栏设置单一颜色,半透明、全透明、底部导航栏半透明等方面实践截图完成沉浸效果。

        下一章介绍隐藏底部导航栏,传送门链接:

        (AS笔记)Android全透明沉浸式主题样式——全屏沉浸隐藏底部导航栏

          CSDN链接:https://blog.csdn.net/qq_39038178/article/details/119661162


2.自定义主题theme

<style name="主题名称" parent="主题样式风格">
<style name="Theme1" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<style name="Theme2" parent="Theme.AppCompat.Light.Dialog">
<style name="Theme3" parent="Theme.AppCompat.Light.NoActionBar">
<style name="Theme4" parent="Theme.AppCompat.DayNight.NoActionBar">
<style name="主题名称..." parent="主题样式风格...">

说明:AndroidManifest.xml配置清单中<application>标签调用自定义主题名称x,表示当前App应用默认全局使用都该自定义主题名称x。如:<application android:theme="@style/主题名称x"......</application>

        AndroidManifest.xml调用自定义主题“TranslucentTheme”,作用于全局使用该主题


3.全透明沉浸式主题theme,

        主题样式使用:“Theme.AppCompat.Light.NoActionBar

<!-- 全透明 沉浸式 parent 主题样式 -->
<!-- <style name="主题名称" parent="Theme.AppCompat.Light.NoActionBar"> -->
<!--    ... -->
<!--    ... -->
<!-- </style> -->

<!-- 全透明 沉浸式主题样式 -->
<style name="TranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar">
</style>

        使用“Theme.AppCompat.Light.NoActionBar”,效果如下:

说明:以上效果图是没有“设置状态栏颜色”属性时,状态栏默认浅灰色


4.设置状态栏颜色(Android 5.0+)

        颜色定义:系统预设颜色/自定义颜色

        属性“android:statusBarColor设置状态栏,刚才也说过,不设置状态栏属性默认浅灰色

<!-- tools:targetApi="l"表示:Android 5.0——Lollipop(棒棒糖)-->
<!-- Android 5.0 以上支持 setStatusBarColor() 设置状态栏颜色 -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- 状态栏设置自定义颜色 -->
<item name="android:statusBarColor" tools:targetApi="l">自定义颜色</item>
<!-- 状态栏设置系统预设颜色 -->
<item name="android:statusBarColor" tools:targetApi="l">系统预设颜色</item>

        设置状态栏为绿色:其它颜色此处不展示——绿绿更健康

<!-- 全透明 沉浸式 parent 主题样式 -->
<!-- <style name="主题名称" parent="Theme.AppCompat.Light.NoActionBar"> -->
<!--    ... -->
<!--    ... -->
<!-- </style> -->

<!-- 全透明 沉浸式主题样式 -->
<style name="TranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- 设置状态栏为绿色 -->
    <item name="android:statusBarColor" tools:targetApi="l">#4CAF50</item>
</style>

说明:显然设置单一颜色不适合沉浸式主题样式。期待解决不?咱们继续搞~!~!~!此处设置绿色,主要是了解有这样的用法。


5.设置状态栏半透明

<!-- 全透明 沉浸式 parent 主题样式 -->
<!-- <style name="主题名称" parent="Theme.AppCompat.Light.NoActionBar"> -->
<!--    ... -->
<!--    ... -->
<!-- </style> -->

<!-- 全透明 沉浸式主题样式 -->
<style name="TranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- 设置状态栏为绿色——已注释 -->
    <!-- <item name="android:statusBarColor" tools:targetApi="l">#4CAF50</item> -->

    <!-- 设置状态栏半透明 -->
    <item name="android:windowTranslucentStatus">true</item>
</style>

说明:设置状态栏半透明之后,可以隐约看见状态栏后面全屏填充的背景图片,但是,通常情况下,实现沉浸式主题风格,是不希望状态有颜色出现。显然,半透明也同样不适合,此处设置主要是了解有这样的用法,咱们继续搞~!~!~!


6.设置底部导航栏半透明

<!-- 全透明 沉浸式 parent 主题样式 -->
<!-- <style name="主题名称" parent="Theme.AppCompat.Light.NoActionBar"> -->
<!--    ... -->
<!--    ... -->
<!-- </style> -->

<!-- 全透明 沉浸式主题样式 -->
<style name="TranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- 设置状态栏为绿色——已注释-->
    <!-- <item name="android:statusBarColor" tools:targetApi="l">#4CAF50</item> -->

    <!-- 设置状态栏半透明——已注释 -->
    <!-- <item name="android:windowTranslucentStatus">true</item> -->

    <!-- 设置底部导航栏半透明,默认false黑色,设置true半透明 -->
    <item name="android:windowTranslucentNavigation">true</item>
</style>


7.设置状态栏全透明

        设置绿色,显然不符合沉浸式主题,颜色属性:@android:color/transparent

<!-- 全透明 沉浸式 parent 主题样式 -->
<!-- <style name="主题名称" parent="Theme.AppCompat.Light.NoActionBar"> -->
<!--    ... -->
<!--    ... -->
<!-- </style> -->

<!-- 全透明 沉浸式主题样式 -->
<style name="TranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- 设置状态栏为绿色——已注释-->
    <!-- <item name="android:statusBarColor" tools:targetApi="l">#4CAF50</item> -->

    <!-- 设置状态栏半透明——已注释 -->
    <!-- <item name="android:windowTranslucentStatus">true</item> -->

    <!-- 设置底部导航栏半透明,默认false黑色,设置true半透明 -->
    <item name="android:windowTranslucentNavigation">true</item>

    <!-- Android 5.0+,设置状态栏全透明透明 -->
    <item name="android:statusBarColor" tools:targetApi="l">@android:color/transparent</item>

</style>

说明:状态栏全透明——状态栏作用区域,实现透明覆盖。由图可见,半透明状态可见的背景图,此时同样已被进行透明化,有部分图片看不见了。继续解决~!~!~!


8.全透明沉浸式主题样式

        重点来了:实现沉浸式主题分析点——结合4节、5节、6节的步骤

  • (1)状态栏半透明设置为false,不设置此项也可以,默认就是false,但是规范原因,这项建议添加到自定义主题中。
  • (2)状态栏全透明是必须参数,不然状态半透明无论是false还是true,顶部状态栏始终是有颜色遮挡住的
  • (3)底部导航栏半透明设置true,默认fasle是黑色。

        总结:设置以后3点,这样让人体验使用App应用时,有种很宽敞的感觉,觉得自己手机屏幕尺寸很大,很牛逼~!~!~!

<!-- 全透明 沉浸式 parent 主题样式 -->
<!-- <style name="主题名称" parent="Theme.AppCompat.Light.NoActionBar"> -->
<!--    ... -->
<!--    ... -->
<!-- </style> -->

<!-- 全透明 沉浸式主题样式 -->
<style name="TranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- 设置状态栏为绿色——已注释-->
    <!-- <item name="android:statusBarColor" tools:targetApi="l">#4CAF50</item> -->

    <!-- 设置状态栏半透明——解除注释 -->
    <item name="android:windowTranslucentStatus">false</item>

    <!-- 设置底部导航栏半透明,默认false黑色,设置true半透明 -->
    <item name="android:windowTranslucentNavigation">true</item>

    <!-- Android 5.0+,设置状态栏全透明透明 -->
    <item name="android:statusBarColor" tools:targetApi="l">@android:color/transparent</item>

</style>

       个人理解: 状态栏沉浸=状态栏半透明false+开启状态栏全透明+底部导航栏true


9.半透明沉浸式主题样式

<!-- 半透明 沉浸式主题样式 -->
<style name="TranslucentTheme1" parent="Theme.AppCompat.Light.NoActionBar">
    <!--半透明状态栏-->
    <item name="android:windowTranslucentStatus">true</item>
    <!--半透明导航栏-->
    <item name="android:windowTranslucentNavigation">true</item>
</style>

说明:至此,顶部状态栏实现了全透明沉浸式,但仔细发现,底部导航栏还存在呢。难不成false黑色?true半透明?当然要把底部导航栏隐藏了,才是真正的沉浸式主题风格,全屏沉浸隐藏底部导航栏教程,传送门链接: 

        (AS笔记)Android全透明沉浸式主题样式——全屏沉浸隐藏底部导航栏

          CSDN链接:https://blog.csdn.net/qq_39038178/article/details/119661162


 10.总结

仅自己学习记录,如有错误,敬请谅解~,谢谢~~~ 

  • 5
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Android Studio中修改底部导航栏字体颜色可以通过设置BottomNavigationView的itemTextColor属性来实现。你可以在布局文件中找到BottomNavigationView的定义,并设置itemTextColor属性为你想要的颜色值。例如,你可以在布局文件中添加以下代码来修改字体颜色: ```xml <com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/navigation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" app:itemTextColor="@color/your_color" app:menu="@menu/navigation" /> ``` 其中,@color/your_color是你想要设置的颜色值。你可以在colors.xml文件中定义你想要的颜色值。这样就可以修改底部导航栏的字体颜色了。\[2\] 另外,如果你使用的是viewpager2来实现fragment切换效果,你需要使用setOnItemSelectedListener方法来替代OnNavigationItemSelectedListener方法。你可以在activity中调用该方法,并在方法内部根据选中的item来切换fragment。例如,你可以在activity中添加以下代码来实现fragment的切换: ```java private void navigation() { navigation.setOnItemSelectedListener(item -> { switch (item.getItemId()){ case R.id.navigation_shouye: viewPager2.setCurrentItem(0); toolbar.setTitle("首页"); break; case R.id.navigation_xiaoxi: viewPager2.setCurrentItem(1); toolbar.setTitle("消息"); break; case R.id.navigation_biji: viewPager2.setCurrentItem(2); toolbar.setTitle("笔记"); break; case R.id.navigation_my: viewPager2.setCurrentItem(3); toolbar.setTitle("我的"); break; } return true; }); navigation.setSelectedItemId(R.id.navigation_shouye); } ``` 这样就可以实现底部导航栏的字体颜色修改和fragment切换效果了。\[3\] #### 引用[.reference_title] - *1* *2* *3* [Android对于Fragment的使用以及底部导航栏问题](https://blog.csdn.net/qq_43761240/article/details/124517691)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电竞丶小松哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值