Android 沉浸式設計時輸入法彈出ToolBar被拉伸
阿新 • • 發佈:2019-02-12
這個是給ToolBar添加了android:fitsSystemWindows="true"且輸入法設定adjustResize
Toolbar顯示不完整,輸入法展開時候,Toolbar被拉伸
解決辦法,
辦法一:
1、可以在佈局的根佈局下新增android:fitsSystemWindows="true"
我測試了華為和魅族和三星是沒有問題的
辦法二
1、給Toolbar設定Google推薦的高度(?attr/actionBarSize)
2、
// 1.先設定toolbar的高度 toolbar = (Toolbar) findViewById(R.id.toolbar); ViewGroup.LayoutParams params = toolbar.getLayoutParams(); int statusBarHeight = getStatusBarHeight(this); params.height += statusBarHeight; Log.i("wxf","1:"+params.height); Log.i("wxf","2:"+statusBarHeight); toolbar.setLayoutParams(params); // 2.設定paddingTop,以達到狀態列不遮擋toolbar的內容。 toolbar.setPadding(toolbar.getPaddingLeft(), toolbar.getPaddingTop() + getStatusBarHeight(this), toolbar.getPaddingRight(), toolbar.getPaddingBottom());
/** * 獲取狀態列的高度 * * @param context * @return */ private int getStatusBarHeight(Context context) { // 反射手機執行的類:android.R.dimen.status_bar_height. int statusHeight = -1; try { Class<?> clazz = Class.forName("com.android.internal.R$dimen"); Object object = clazz.newInstance(); String heightStr = clazz.getField("status_bar_height").get(object).toString(); int height = Integer.parseInt(heightStr); //dp--->px 因為padding的單位是px statusHeight = context.getResources().getDimensionPixelSize(height); } catch (Exception e) { e.printStackTrace(); } return statusHeight; }
注意:用方法二Toolbar的高度一定要固定,不然toolbar會消失,這是我找到的比較靠譜的解決問題的方法