最佳解決輸入法擋住EditText的方案

2021-09-24 15:21:18 字數 1136 閱讀 9522

下面直接說一下我用的方法:很簡潔很粗暴。

因為在我自己的專案裡。

在androidmanifest.xml中對應的activity配置:android:windowsoftinputmode="statevisible|adjustresize"

這些完全是沒有用滴。包括之前的android也設定過了。完全沒有效果。所以丟到了我的身上。

下面給大家貼出一下工具類 new到activity直接簡單粗暴到解決問題

(1) 找到activity的最外層布局控制項,我們知道所有的activity都是decorview,它就是乙個framelayout控制項,該控制項id是系統寫死叫r.id.content,就是我們setcontentview時,把相應的view放在此framelayout控制項裡

framelayout content = (framelayout) activity.findviewbyid(android.r.id.content);
所以content.getchildat(0)獲取到的mchildofcontent,也就是我們用setcontentview放進去的view。

(2) 給我們的activity的xml布局view設定乙個listener監聽

(4) 重設高度, 我們計算出的可用高度,是目前在視覺效果上能看到的介面高度。但當前介面的實際高度是比可用高度要多出乙個軟鍵盤的距離的。

具體實現**見demo中的transstatusbarwisthassistactivity類。

注意:如果既使用了沉浸式狀態列,又加了fitsystetemwindow=true屬性,就需要在androidmainfest.xml註冊activity的地方新增上以下屬性。因為你兩種都用,系統不知道用哪種了。fitsystetemwindow已經有resize螢幕的作用。

android:windowsoftinputmode="statehidden|adjustpan"

移動端解決input框被輸入法擋住的問題

有過移動端web開發經驗的人應該都會遇到這個問題,乙個input在頁面最底部或者偏下的位置,輸入時由於輸入法的彈出,在部分瀏覽器下由於不會自動計算window的高度,導致input被輸入法擋住。本文的解決方式是利用scrolltop來解決,在input獲取焦點後,動態地設定body的高度並設定scr...

Android中解決輸入法問題

在開發中,必不可少的會使用到文字框 edittext 來進行資料錄入,也就會需要對輸入法進行一些控制。先看下layout定義檔案中的和輸入法有關的屬性 屬性名 說明 android inputtype 指定輸入法的型別,int型別,可以用 選擇多個。取值可以參考 android.text.input...

輸入法不見解決辦法

方法1 在工作列單擊滑鼠右鍵,彈出快捷選單,把滑鼠移動到 工具欄 上,會彈出子選單,看看其中的 語言欄 有沒有被選中,如果沒有選中,單擊選中 語言欄 一般會顯示輸入法圖示。方法2 依次單擊 開始 設定 控制面板 開啟控制面板,在控制面板中單擊 日期 時間 語言和區域設定 單擊 語言和區域設定 彈出 ...