1. 程式人生 > >Android 沉浸式設計時輸入法彈出ToolBar被拉伸

Android 沉浸式設計時輸入法彈出ToolBar被拉伸

這個是給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會消失,這是我找到的比較靠譜的解決問題的方法