Android軟件盤WindowSoftInputMode屬性詳解

在開發當中,我們常常需要讓客戶輸入電話、驗證碼、金額、密碼等,這個時候如果軟件盤設置不好,那麼可能導致一個糟糕的用戶體驗,比如可能會出現,軟件盤遮擋住輸入框下面的提交按鈕,其他輸入框無法輸入等,其實只要我們設置好WindowSoftInputMode的屬性,這種問題還是可以完美解決的。下面我們來看看WindowSoftInputMode的詳細屬性
屬性主要分爲兩類:
控制軟件盤顯示的時機:
1、stateUnspecified:未指定狀態,系統默認的就是這種狀態,一般來講,當頁面沒有輸入焦點的時候,軟件盤是不彈出的,但是當輸入焦點位於一個可以滾動的頁面上的時候就會彈出來了。比如說ScollView包裹一個EditText ,那麼這時就會彈出。
2、stateUnchanged:狀態未改變狀態,也就是說,上一個頁面是隱藏的,進入下一個頁面時也是隱藏的。
3、stateHidden:隱藏狀態,這種狀態和第四種stateAlwaysHidden不同,stateHidden表示的是進入一個頁面時是隱藏的,當從一個頁面返回的時候軟鍵盤就不會再隱藏
4、stateAlwaysHidden:一直隱藏狀態,就是說無論是進入還是返回一個頁面,軟鍵盤始終是隱藏狀態,除非獲取焦點來喚醒它
5、stateVisible:進入頁面時軟鍵盤一直顯示出來,當返回頁面時不再顯示。
6.stateAlwaysVisible:意思就是軟鍵盤在進入或者返回時都是顯示出來的狀態。
控制軟鍵盤與顯示內容直接的關係
1、adjustUnspecified:這個選項是默認的設置模式。在這中情況下,系統會根據界面選擇不同的模式。如果界面裏面有可以滾動的控件,比如ScrowView,系統會減小可以滾動的界面的大小,從而保證即使軟鍵盤顯示出來了,也能夠看到所有的內容。如果佈局裏面沒有滾動的控件,那麼軟鍵盤可能就會蓋住一些內容。
2、adjustResize:這個屬性表示Activity的主窗口總是會被調整大小,從而保證軟鍵盤顯示空間。設置爲adjustResize屬性之後,對於沒有滑動控件的佈局,雖然還是不能選擇所有的輸入框,但是,窗口的顯示方式發生了變化,默認屬性時,整個佈局是被頂上去了,但是設置爲adjustResize屬性,佈局的位置並沒有發生什麼變化,這就是最大的區別。而對於有滑動控件的佈局來說,顯示效果和默認是一樣的。
3、adjustPan:如果設置爲這個屬性,那麼Activity的屏幕大小並不會調整來保證軟鍵盤的空間,而是採取了另外一種策略,系統會通過佈局的移動,來保證用戶要進行輸入的輸入框肯定在用戶的失業範圍裏面,從而讓用戶可以看到自己輸入的內容。對於沒有滾動控件的佈局來說,這個其實就是默認的設置,而對於有滾動控件的佈局,則是採用的adjustResize方式。
總結:
1、如果我們不設置"adjust…"的屬性,對於沒有滾動控件的佈局來說,採用的是adjustPan方式,而對於有滾動控件的佈局,則是採用的adjustResize方式。
2、state…和adjust…可以混合使用,比如:stateVisible|adjustPan,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章