華爲手機和谷歌原生系統虛擬按鍵遮擋佈局問題

很多情況下,例如華爲手機和谷歌原生系統只有虛擬按鍵,這時候假如你們做了特殊處理我們可以將佈局繪製到navigationBar裏面。當然爲了避免這種情況,我們應該講所有的繪圖到在navigationBar上面。

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:clipToPadding">false</item>
        <item name="android:windowTranslucentNavigation">false</item>//適配華爲手機的虛擬按鍵
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:navigationBarColor">@color/white10</item>
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/white10</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowBackground">@color/windowBackground</item>
        <item name="android:textColorHighlight">@color/white</item>
        <item name="android:textColorPrimary">@color/white</item>
        <item name="android:textColorSecondary">@color/white</item>
        <item name="android:textColor">@color/white</item>
        <item name="android:divider">@color/white</item>
        <item name="android:textColorHint">@color/white</item>
        <item name="colorControlNormal">@color/white</item>
        <item name="colorControlActivated">@color/white</item>
        <item name="colorControlHighlight">@color/white</item>
    </style>

//適配華爲手機的虛擬按鍵

<item name="android:windowTranslucentNavigation">false</item>

沉浸欄導航欄也不要了

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            //透明狀態欄
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        }

這樣我們就沒有手動繪製得出每個navigationBar的高度。stackoverflow的至今沒有一個完全的答案可以判斷是否存在虛擬按鍵

 private int getNavigationBarHeight() {
        Resources resources = getResources();
        int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
        if (resourceId > 0) {
            return resources.getDimensionPixelSize(resourceId);
        }
        return 0;
    }

加了一個margin但是在小米手機這種沒有虛擬鍵的也同時預留了一段空白。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章