安卓軟鍵盤彈出,Activity背景被壓縮的解決辦法

最近做個登錄頁,背景不是純色,而是一張圖片,然後輸入框靠近下方,點擊的時候,頁面會全部被推上去,這咋能行捏?於是乎設置 android:windowSoftInputMode 屬性。設置一頓,還是不行,然後又用ScrollView嵌套等等,最後要麼是輸入框不動,背景被推上去;要麼是背景跟輸入框都推上去;要麼就是輸入框被遮擋,反正是各種不符合預期。

谷歌了半小時,也沒找到個完美的解決辦法。

於是乎考慮了一下,彈出軟鍵盤,View的大小變了,那DecorView變不變呢?

沒有驗證,直接很暴力的在 onCreate時

getWindow().getDecorView().setBackgroundResource(R.mipmap.背景);

然後去掉xml裏的背景,輸入框該用ScrollView嵌套的就繼續嵌套。

Activity的

android:windowSoftInputMode="adjustResize|stateHidden" 讓Activity可以自由壓縮,背景是設置在DecorView上了,這個不會壓縮

至此,背景就不會被軟鍵盤彈出而壓縮了,輸入框也不會被遮擋,在ScrollView裏可以自由移動。

我的問題就這麼解決了~

只是其他版本有沒有效果暫時不清楚,Android 8.0測試沒問題,不好用的可以留言反饋,防止誤導他人。

核心就一句話,沒啥代碼可放。也不知道兼容性如何~也不知道會有啥副作用~

 

借用別人的圖說一下,需求就是這樣子的:

左邊是未彈出軟鍵盤,中間是默認情況下彈出軟鍵盤(不符合預期),右邊纔是想要的正常效果。

圖一       圖二       圖三

參考了若干資料:

https://blog.csdn.net/sonwfly/article/details/68945118  就是上面圖片的來源,若干個輸入框的時候貌似有問題。

https://blog.csdn.net/harryweasley/article/details/50266749   這個我測試的時候亂跳,就沒詳細研究。

https://blog.csdn.net/learningcoding/article/details/70755743 這個感覺好麻煩,還得重寫控件,而且感覺阻止改變大小有點奇怪。。

 

 

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