Android虚拟导航栏高度,android 底部虚拟导航栏适配问题
public class NavigationBar {/*** 判断底部导航栏是否显示** @param act* @return*/public static boolean isNavigationBarShow(Activity act) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {Displa
public class NavigationBar {
/**
* 判断底部导航栏是否显示
*
* @param act
* @return
*/
public static boolean isNavigationBarShow(Activity act) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
Display display = act.getWindowManager().getDefaultDisplay();
Point size = new Point();
Point realSize = new Point();
display.getSize(size);
display.getRealSize(realSize);
return realSize.y != size.y;
} else {
boolean menu = ViewConfiguration.get(act).hasPermanentMenuKey();
boolean back = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
if (menu || back) {
return false;
} else {
return true;
}
}
}
/**
* 如果有底部导航栏 获取底部导航栏高度
* @param context
* @return
*/
public static int getBottomNavigatorHeight(Context context) {
int rid = context.getResources().getIdentifier("config_showNavigationBar", "bool", "android");
if (0 != rid) {
int resourceId = context.getResources().getIdentifier("navigation_bar_height", "dimen", "android");
return context.getResources().getDimensionPixelSize(resourceId);
}
return 0;
}
}
用法:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView=findViewById(R.id.tv_height);
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) textView.getLayoutParams();
//判断是否有底部导航栏
NavigationBar navigationBar=new NavigationBar();
if (isNavigationBarShow(MainActivity.this)){//判断底部导航栏是否 显示
textView.setText("高度是:"+getBottomNavigatorHeight(MainActivity.this));
layoutParams.bottomMargin=getBottomNavigatorHeight(MainActivity.this);
}else {
layoutParams.bottomMargin=0;//将默认的距离底部改为0
}
textView.setLayoutParams(layoutParams);
}
更多推荐
所有评论(0)