您的位置:首页 > 移动开发 > Android开发

Android 开发中关于底部导航栏遮挡布局控件的解决方法

2019-03-01 17:36 1446 查看
[code]/**
* 判断是否存在NavigationBar
* @param context:上下文环境
* @return:返回是否存在(true/false)
*/
public boolean checkDeviceHasNavigationBar(Context context) {
boolean hasNavigationBar = false;
Resources rs = context.getResources();
int id = rs.getIdentifier("config_showNavigationBar", "bool", "android");
if (id > 0) {
hasNavigationBar = rs.getBoolean(id);
}
try {
Class systemPropertiesClass = Class.forName("android.os.SystemProperties");
Method m = systemPropertiesClass.getMethod("get", String.class);
String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys");
if ("1".equals(navBarOverride)) {
//不存在虚拟按键
hasNavigationBar = false;
ToastUtil.ShowShort(SearchActivity.this,"不存在虚拟按键");
} else if ("0".equals(navBarOverride)) {
//存在虚拟按键
hasNavigationBar = true;
//手动设置控件的margin
//linebutton是一个linearlayout,里面包含了两个Button
LinearLayout.LayoutParams layout = (LinearLayout.LayoutParams) linbutton.getLayoutParams();
//setMargins:顺序是左、上、右、下
layout.setMargins(0,0,0,getNavigationBarHeight(this)+10);
}
} catch (Exception e) {
e.printStackTrace();
}
return hasNavigationBar;
}

/**
* 测量底部导航栏的高度
* @param mActivity:上下文环境
* @return:返回测量出的底部导航栏高度
*/
private int getNavigationBarHeight(Activity mActivity) {
Resources resources = mActivity.getResources();
int resourceId = resources.getIdentifier("navigation_bar_height","dimen", "android");
int height = resources.getDimensionPixelSize(resourceId);
return height;
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: