修复小米某机型首页底部导航栏icon展示不全问题

This commit is contained in:
Martin 2024-10-10 15:16:15 +08:00
parent 4bda504eba
commit 25ae11b77d
2 changed files with 68 additions and 0 deletions

View File

@ -0,0 +1,65 @@
package com.yunbao.common.utils;
import android.app.Activity;
import android.content.res.Resources;
import android.os.Build;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
public class NavigationBarUtils {
public static boolean hasNavigationBar(Activity activity) {
boolean hasNavigationBar = false;
int resourceId = activity.getResources().getIdentifier("config_showNavigationBar", "bool", "android");
if (resourceId > 0) {
hasNavigationBar = activity.getResources().getBoolean(resourceId);
}
try {
hasNavigationBar |= (Boolean) ViewConfiguration.class.getDeclaredMethod("hasNavigationBar").invoke(ViewConfiguration.get(activity));
} catch (Exception e) {
e.printStackTrace();
}
// Fall back on checking the navigation bar height, if available
if (!hasNavigationBar && hasNavBarHeight()) {
hasNavigationBar = true;
}
return hasNavigationBar;
}
public static boolean hasNavBarHeight() {
Resources res = Resources.getSystem();
int resourceId = res.getIdentifier("navigation_bar_height", "dimen", "android");
if (resourceId > 0) {
return res.getDimensionPixelSize(resourceId) > 0;
}
return false;
}
// 示例在Activity中使用该方法
public static boolean checkNavigationBar(Activity activity) {
return hasNavigationBar(activity);
}
public static int checkBarHeight(Activity activity) {
int result = 0;
Resources resources = activity.getResources();
int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
if (resourceId > 0) {
result = resources.getDimensionPixelSize(resourceId);
}
return result;
}
public static void setBarStatus(RelativeLayout rt_main_tab, Activity mContext){
if("Xiaomi".equals(Build.BRAND)&&"2210132C".equals(Build.MODEL)){
ViewGroup.LayoutParams params = rt_main_tab.getLayoutParams();
params.height =params.height+ NavigationBarUtils.checkBarHeight(mContext);
rt_main_tab.setLayoutParams(params);
}
}
}

View File

@ -111,6 +111,7 @@ import com.yunbao.common.utils.GiftCacheUtil;
import com.yunbao.common.utils.GoogleUtils;
import com.yunbao.common.utils.LiveRoomCheckLivePresenter;
import com.yunbao.common.utils.LocationUtil;
import com.yunbao.common.utils.NavigationBarUtils;
import com.yunbao.common.utils.ProcessResultUtil;
import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.utils.SpUtil;
@ -581,6 +582,8 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene
//获取声网Token
getSwToken();
initLogUpdate();
//检测底部导航栏高度
NavigationBarUtils.setBarStatus(rt_main_tab,mContext);
}
private void getSwToken() {