UI

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

2021-09-02  本文已影响0人  仍旧热忱_3619

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

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

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

上一篇 下一篇

猜你喜欢

热点阅读