Android 解決全面屏 軟鍵盤彈出會有高度約50dp的白條。

效果對比圖片先走

解決前效果圖
T_X0~JU{WQ2FC1W$M})J%1S.jpg
解決完成后效果圖
0EBFD68FC050B16866B81321E0FD9C62.jpg
/**
 * @author colin
 * @Date 2020/7/20
 * @ClassTag :
 */

public class AndroidBug5497Workaround {
    public static void assistActivity(Activity activity) {

        new AndroidBug5497Workaround(activity);

    }

    private View mChildOfContent ;

    private int usableHeightPrevious;

    private FrameLayout.LayoutParams frameLayoutParams ;

    private AndroidBug5497Workaround(Activity activity) {

        FrameLayout content = (FrameLayout) activity.findViewById(android.R.id.content);

        mChildOfContent = content.getChildAt(0);

        mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

            public void onGlobalLayout() {

                possiblyResizeChildOfContent();

            }

        });

        frameLayoutParams = (FrameLayout.LayoutParams) mChildOfContent.getLayoutParams();

    }

    private void possiblyResizeChildOfContent() {

        int usableHeightNow = computeUsableHeight();

        if (usableHeightNow != usableHeightPrevious) {

            int usableHeightSansKeyboard = mChildOfContent.getRootView().getHeight();

            int heightDifference = usableHeightSansKeyboard - usableHeightNow;

            if (heightDifference > (usableHeightSansKeyboard / 4)) {

// keyboard probably just became visible

                frameLayoutParams.height = usableHeightSansKeyboard - heightDifference;

            } else {

// keyboard probably just became hidden

                frameLayoutParams.height = usableHeightSansKeyboard;

            }

            mChildOfContent.requestLayout();

            usableHeightPrevious = usableHeightNow;

        }

    }

    private int computeUsableHeight() {

        Rect r = new Rect();

        mChildOfContent.getWindowVisibleDisplayFrame(r);

        return (r.bottom - r.top);// 全屏模式下:return r.bottom

    }

}

使用方式

image.png
//在Activity中初始化
  AndroidBug5497Workaround.assistActivity(this);
     <!--富文本編輯-->
        <activity
            android:name=".ui.html.activity.RichEditorActivity"
            android:windowSoftInputMode="adjustPan"/>

一定要在 清單文件對應的Activity中設置 adjustPan屬性

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容