今天在做一個需要輸入很多內容的界面的時候出現了一些小問題
目標是:點擊輸入框的時候,彈出的軟鍵盤能把界面往上頂,讓軟鍵盤上面就是正在輸入的輸入框
出現的問題:在軟鍵盤改變了佈局的時候,底部的內容跟着軟鍵盤往上移動了,剛好擋住了輸入框
思路1:能否讓底部的佈局不受系統軟鍵盤影響
做法:在底部內容上添加了
android:fitsSystemWindows="false"
意思是讓底部的view不受系統UI影響
結果:並沒有什麼效果
原因:https://blog.csdn.net/smileiam/article/details/69055963
需要在沉浸式的界面中,並且我僅知道這個語句在爲“true”的時候,是計算系統UI的大小並給view添加一個padding
至於“false”是不是不計算系統UI大小 並可以與系統UI(軟鍵盤)重疊只是我的猜測。同時軟鍵盤是否算系統UI這個我也是猜着他是而已
思路2:讓界面的所有佈局都不受軟鍵盤彈起影響
這個思路與想要實現的效果有衝突,所以打算在這個情況疊加手動讓輸入框,移動到軟鍵盤上方
結果想着想着,就看到了一個和我情況基本相同的老哥
https://blog.csdn.net/wayne214/article/details/83824065
看到裏面提到的屬性(adjustPan),明顯就是讓整個界面不會隨着軟件盤調整的參數
想着這個老哥可能思路和我類似就瞭解了一下另外一個屬性(stateAlwaysHidden)的意思
https://blog.csdn.net/Rodulf/article/details/84575595
結果發現我對 adjusPan 這個屬性有誤解
這個屬性是讓固定的界面不調整,而滾動的界面一樣會隨着軟鍵盤調整(例如:scrollview)
而意味着完全不調整的屬性是 adjustNothing
stateAlwaysHidden的意思是 進入界面的時候不主動彈出軟鍵盤
所以這個問題在manifest裏面對着activity添加
android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
這個語句就解決了,(stateAlwaysHidden)沒關係