Android WebView介面輸入法彈起遮擋文字框問題最終解決方案---網上的其他的全是渣渣

語言: CN / TW / HK

為什麼說網上的其他的全是渣渣?

因為踩過坑,網上大多數解決方案並不能適配所有手機,一堆部落格全都是什麼動態計算頂部狀態列,動態計算頂部導航欄。亂七八糟的在全域性佈局監聽器裡一算。設計過於複雜,且不能適配所有安卓機型,還需要改各種配置等。我試的可笑的是Android webView輸入框軟鍵盤遮擋問題-終極解決方案(不好使你打我),用了,然後產生新的問題,底部被原生導航欄遮擋,嘗試修改,未果。PS---我真想去打他

自我解決方案

  • 先說優點,邏輯簡單一看就會。 上程式碼: ``` /**
  • 輸入法問題的最終處理方案。將這個方法直接在activity的onCreate方法中呼叫即可。 */ private void softInputProc(){ //這個監聽是com.blankj:utilcode 庫裡的,一個安卓經常用到的工具類類庫,大家可以 自行github搜尋下,也可以替換成自己的輸入法改變時檢測高度的程式碼 KeyboardUtils.registerSoftInputChangedListener(this,height -> { Log.d("---> 輸入法height",""+height); if(height>0){ if(originalHeight==0){ originalHeight=webParent.getMeasuredHeight(); } //ToastUtils.show("輸入法彈出處理"); ViewGroup.LayoutParams params = webParent.getLayoutParams(); params.height = originalHeight-height; webParent.setLayoutParams(params); }else{ if(originalHeight!=0){ ToastUtils.show("輸入法關閉處理"); ViewGroup.LayoutParams params = webParent.getLayoutParams(); params.height = originalHeight; webParent.setLayoutParams(params); } } }); } ```

解釋說明

  • 先說監聽器

監聽是com.blankj:utilcode 庫裡的,一個安卓經常用到的工具類類庫,大家可以 自行github搜尋下,也可以替換成自己的輸入法改變時檢測高度的程式碼 - originalHeight

自行在activity中定義一下即可。int型別,初不初始化都行預設0.

  • webParent

當前Activity的最外層佈局容器。

包教包會

如果您執行了上面程式碼還不能完美解決輸入法問題,或者哪裡不清楚,不明白。請QQ我(634534398 如此風景)。包教包會。也歡迎您在底部評論您在整合此程式碼時遇到的問題。