Android 屏幕适配 - 设置底部虚拟菜单栏

 Android 手机现在越来越多的是全面屏/刘海屏,不止需要适配头部的状态栏,如有需要,可以参考: Android 屏幕适配 - 支持刘海屏

底部的虚拟菜单栏也需要适配,这里拿小米9的机型来示例:默认是白底的,如果应用背景是其他颜色(比如黑色),是需要做下适配的;

如下示例:

所以我们可以简单的适配一下,即设置它的颜色来起到适配的作用;
这里Android有提供方法:android:navigationBarColor/ setNavigationBarColor(@ColorInt int color) 

xml:

<item name="android:navigationBarColor">@color/colorBackground</item>

activity: 

getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.colorBackground))

这里的处理分两步:

1. 在style中设置底部虚拟菜单栏的默认背景色:

// manifest中的 application - android:theme:
<application
        android:name=".App"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:networkSecurityConfig="@xml/network_security_config"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme.NoActionBar">



// 对于 @style/AppTheme.NoActionBar:
<style name="AppTheme.NoActionBar">
        <!-- 设置默认的颜色 -->
        <item name="android:navigationBarColor">@color/colorBackground</item>
</style>

2. 在BaseActivity中再处理一下其他背景色的页面:

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // 根据不同的页面去设置不同的颜色
        if (isNavigationBarColorWhite()) {
            window.navigationBarColor = ContextCompat.getColor(this, R.color.colorWhite)
        }

        setContentView(activityProperties.layoutResID)
        init()
    }


    fun Activity.isNavigationBarColorWhite(): Boolean {
        return mutableListOf(WelcomeActivity::class.java.simpleName).any {
             this::class.java.simpleName == it
        }
    }

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值