美文网首页UI
android导航栏与状态栏颜色及透明度

android导航栏与状态栏颜色及透明度

作者: 仍旧热忱_3619 | 来源:发表于2021-09-02 11:25 被阅读0次

    首先创建一个空项目,如下图

    image.png

    可以看到状态栏是白字黑背景, 导航栏也是白图标黑背景
    嘿嘿, 我们先把状态栏隐藏掉,在添加一个ImageView, 让ImageView做背景(方便查看)

        ImageView mImageView;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            if (getSupportActionBar() != null) getSupportActionBar().hide();//隐藏标题栏
    
            mImageView = findViewById(R.id.image_view);//拿到imageView
            mImageView.setImageResource(R.drawable.logo);//设置一样图片, 并且让图片充满屏幕, 这里在ImageView里设置属性 scaleType="centerCrop" 来解决
        }
    

    样子如下:


    image.png

    将状态栏和导航栏设置透明, 找到Manifest.xml文件, 在主题样式中修改

    <resources>
        <!-- Base application theme. -->
        <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
            <!-- Customize your theme here. -->
            ...
    
            <item name="android:statusBarColor">#00000000</item> <!-- 设置状态栏背景色为透明 -->
            <item name="android:navigationBarColor">#00000000</item> <!-- 设置导航栏背景色为透明 -->
    
            <item name="android:windowLightStatusBar">true</item> <!-- 设置状态栏文字色为深色, true为深色, false为白色 -->
            <item name="android:windowLightNavigationBar">true</item> <!-- 设置导航栏文字色为深色, true为深色, false为白色 -->
        </style>
    </resources>
    

    android:statusBarColor 设置状态栏背景色
    android:navigationBarColor 同上
    android:windowLightStatusBar 设置状态栏文字色, true为深色, false为白色
    android:windowLightNavigationBar 同上
    android:windowTranslucentStatus 设置状态栏半透明状态, true为半透明, false为不透明
    android:windowTranslucentNavigation 同上

    最后两个半透明状态下面没用, 可自己尝试看效果

    效果图如下:


    image.png

    可以看到导航栏与状态栏并没有透明,原因是默认不能占用状态栏空间与导航栏空间,根布局背景为白色,所有这里显示白色
    可以通过设置getWindow().getDecorView().setSystemUiVisibility()来适配

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            ...
    
            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
        }
    

    View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 适配状态栏空间
    View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 适配导航栏空间
    效果如下:

    image.png

    可以看到之前状态栏与导航栏之前是深色的字体变成白色了, 这是因为配置适配状态栏和导航栏之后, 系统会根据后面背景色自动来调节字色为深色还是白色

    相关文章

      网友评论

        本文标题:android导航栏与状态栏颜色及透明度

        本文链接:https://www.haomeiwen.com/subject/rzmqwltx.html