頁面有輸入框時都要考慮會不會被鍵盤擋住,于是fitsSystemWindows屬性就派上了用場
屬性說明
fitsSystemWindows屬性可以讓view根據系統窗口來調整自己的布局;簡單點說就是我們在設置應用布局時是否考慮系統窗口布局,這里系統窗口包括系統狀態欄、導航欄、輸入法等,包括一些手機系統帶有的底部虛擬按鍵。
android:fitsSystemWindows=”true” (觸發View的padding屬性來給系統窗口留出空間)
這個屬性可以給任何view設置,只要設置了這個屬性此view的其他所有padding屬性失效,同時該屬性的生效條件是只有在設置了透明狀態欄(StatusBar)或者導航欄(NavigationBar)此屬性才會生效。
注意??: fitsSystemWindows只作用在Android4.4及以上的系統,因為4.4以下的系統StatusBar沒有透明狀態。
應用場景
在不同Android版本下,App狀態欄和不同版本中系統本身的狀態欄的適配;
兼容帶有底部虛擬按鍵的手機系統。
摘抄自 https://www.cnblogs.com/xgjblog/p/9517645.html
遇到的坑
當一個頁面里面不止一個輸入框時,例如BaseActivity里面很多地方需要適應鍵盤彈出,那么只有最上面設置android:fitsSystemWindows=”true”的會生效,下面的就不生效了,為了解決這個問題需要在代碼中動態控制一下
//位于上面的view
viewTop.setFitsSystemWindows(false);
//位于下面的組件
viewBottom.setFitsSystemWindows(true);