1. 程式人生 > >Android軟鍵盤遮擋的四種解決方案

Android軟鍵盤遮擋的四種解決方案

  • 問題概述

在編輯框輸入內容時會彈出軟鍵盤,而手機螢幕區域有限往往會遮住輸入介面,我們先看一下問題效果圖:

輸入使用者名稱和密碼時,系統會彈出鍵盤,造成系統鍵盤會擋住文字框的問題,如圖所示:

輸入密碼時輸入框被系統鍵盤遮擋了,大大降低了使用者操作體驗,這就是開發中非常常見的軟鍵盤遮擋的問題,該如何解決?

  • 簡單解決方案

 方法一

在你的activity中的oncreate中setContentView之前寫上這個程式碼

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

方法二

在 專案的AndroidManifest.xml檔案中介面對應的<activity>里加入

這樣會讓螢幕整體上移。如果加上的 是 android:windowSoftInputMode="adjustPan"這樣鍵盤就會覆蓋螢幕。

    關於android:windowSoftInputMode

activity主視窗與軟鍵盤的互動模式,可以用來避免輸入法面板遮擋問題,Android1.5後的一個新特性。

這個屬效能影響兩件事情:

【一】當有焦點產生時,軟鍵盤是隱藏還是顯示

【二】是否減少活動主視窗大小以便騰出空間放軟鍵盤

    它的設定必須是下面列表中的一個值,或一個”state…”值加一個”adjust…”值的組合。在任一組設定多個值——多個”state…”values,例如&mdash有未定義的結果。各個值之間用|分開。

    例如:

<activityandroid:windowSoftInputMode="stateVisible|adjustResize". . . >

在這設定的值(除"stateUnspecified"和"adjustUnspecified"以外)將覆蓋在主題中設定的值

  方法三

把頂級的layout替換成ScrollView,或者說在頂級的Layout上面再加一層ScrollView。這樣就會把軟鍵盤和輸入框一起滾動了,軟鍵盤會一直處於底部。

  • 程式碼可控性方法

1、主介面佈局檔案

2、自定義LinearLayoutView

    該元件可實現根據軟鍵盤的彈出/關閉而隱藏和顯示某些區域,這是問題解決最關鍵部分,主要有兩點:

    ① 重寫onSizeChanged方法

該方法是View生命週期的方法,當View尺寸發生變化時呼叫,如豎屏橫屏切換、軟鍵盤彈出。這裡當軟鍵盤彈出造成View尺寸改變,就會呼叫onSizeChanged方法,在該方法實現程式碼的核心思想是根據尺寸變化,當變大(軟鍵盤彈出),將某些區域隱藏以給編輯介面預留出足夠顯示空間;當恢復(軟鍵盤關閉),再將隱藏的區域顯示出來

    ②提供KeyBordStateListener  介面採用回撥機制呼叫介面的實現方法。

3.主介面MainActivit

  • 實現效果

鍵盤彈出:

鍵盤關閉: