首页 > 代码库 > Android 頁面中有 EditText ,進入時取消自動彈出鍵盤

Android 頁面中有 EditText ,進入時取消自動彈出鍵盤

Android 畫面裡的 EditText 被 Focus 時
自動彈出鍵盤
這是方便使用者習慣的設計
不過筆者在開發時發現
有時候方便過頭了

 

原因

一開始進入有 EditText 的頁面時
EditText 會自動 Focus 及彈出鍵盤
這就會造成困懮
因為使用者進入頁面時
不一定是要輸入資料
可能只是看資料而已
而且鍵盤會佔住一大半的畫面

解決方法一(失敗)

網路上許多解答都說在最外層的 Element
加上兩個屬性

1
2
android:focusable="true"
android:focusableInTouchMode="true"

即可取消自動 Focus
避免彈出鍵盤
不過筆者試了好幾次都是失敗
設定後不只 Focus 被取消
連 EditText 都不能點
猜想可能是 Android 版本不同的關係

解決方法二(成功)

後來轉一個方向
朝彈出鍵盤下手
找到一個 windowSoftInputMode 屬性
可以控制鍵盤的狀態
就算進入頁面 EditText 被 Focus
鍵盤也不會彈出來

AndroidManifest.xml

1
2
3
4
<activity
    android:name=".MainActivity"
    android:label="@string/title_activity_main"
    android:windowSoftInputMode="stateHidden" >

修改前,進入頁面會彈出鍵盤

修改後,進入頁面不會彈出鍵盤

點擊 EditText 才會彈出鍵盤

Android 頁面中有 EditText ,進入時取消自動彈出鍵盤