在編輯框輸入內容時會彈出軟鍵盤,而手機屏幕區域有限每每會遮住輸入界面,咱們先看一下問題效果圖:android
輸入用戶名和密碼時,系統會彈出鍵盤,形成系統鍵盤會擋住文本框的問題,如圖所示:佈局
輸入密碼時輸入框被系統鍵盤遮擋了,大大下降了用戶操做體驗,這就是開發中很是常見的軟鍵盤遮擋的問題,該如何解決?性能
簡單解決方案xml
方法一接口
在你的activity中的oncreate中setContentView以前寫上這個代碼生命週期
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);ci
方法二開發
在 項目的AndroidManifest.xml文件中界面對應的<activity>里加入get
這樣會讓屏幕總體上移。若是加上的 是 android:windowSoftInputMode="adjustPan"這樣鍵盤就會覆蓋屏幕。it
關於android:windowSoftInputMode
activity主窗口與軟鍵盤的交互模式,能夠用來避免輸入法面板遮擋問題,Android1.5後的一個新特性。
這個屬性能影響兩件事情:
【一】當有焦點產生時,軟鍵盤是隱藏仍是顯示
【二】是否減小活動主窗口大小以便騰出空間放軟鍵盤
它的設置必須是下面列表中的一個值,或一個」state…」值加一個」adjust…」值的組合。在任一組設置多個值——多個」state…」values,例如&mdash有未定義的結果。各個值之間用|分開。
例如:
<activityandroid:windowSoftInputMode="stateVisible|adjustResize". . . >
在這設置的值(除"stateUnspecified"和"adjustUnspecified"之外)將覆蓋在主題中設置的值
方法三
把頂級的layout替換成ScrollView,或者說在頂級的Layout上面再加一層ScrollView。這樣就會把軟鍵盤和輸入框一塊兒滾動了,軟鍵盤會一直處於底部。
代碼可控性方法
一、主界面佈局文件
二、自定義LinearLayoutView
該組件可實現根據軟鍵盤的彈出/關閉而隱藏和顯示某些區域,這是問題解決最關鍵部分,主要有兩點:
① 重寫onSizeChanged方法
該方法是View生命週期的方法,當View尺寸發生變化時調用,如豎屏橫屏切換、軟鍵盤彈出。這裏當軟鍵盤彈出形成View尺寸改變,就會調用onSizeChanged方法,在該方法實現代碼的核心思想是根據尺寸變化,當變大(軟鍵盤彈出),將某些區域隱藏以給編輯界面預留出足夠顯示空間;當恢復(軟鍵盤關閉),再將隱藏的區域顯示出來
②提供KeyBordStateListener 接口採用回調機制調用接口的實現方法。
3.主界面MainActivit
實現效果
鍵盤彈出:
鍵盤關閉: