當(dāng)EditText獲取到焦點(diǎn),鍵盤彈出,為保證EditText不被遮擋秸妥,activity的布局會做一些調(diào)整即寡,<activity>的windowSoftInputMode屬性便控制此時(shí)activity的布局如何調(diào)整钝满。
windowSoftInputMode常用兩個值,分別是 adjustResize, adjustPan
adjustResize當(dāng)鍵盤彈出時(shí),從下往上壓縮activity布局,壓縮的距離等于鍵盤的高度熊杨。壓縮之后,不管EditText是否可見盗舰。
adjustPan當(dāng)鍵盤彈出時(shí)晶府,如果EditText被鍵盤遮擋,activity內(nèi)容從下向上滾動钻趋,以保證EditText不被鍵盤遮擋川陆;如果EditText不被遮擋,則不滾動蛮位。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:layout_marginTop="300dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:layout_marginTop="200dp"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="alignParentBottom"
android:background="@android:color/holo_blue_bright"/>
</RelativeLayout>
界面效果:
- <activity> windowSoftInputMode=“adjustResize”较沪,彈出鍵盤:
鍵盤彈出,activity從下而上壓縮到鍵盤上邊空間區(qū)域大小土至,由于TextView是alignParentBottom底部對齊的购对,所以出現(xiàn)被鍵盤頂上去的效果猾昆。
如果xml中最外層布局是LinearLayout陶因,壓縮之后,由于可見空間不足以展示所有內(nèi)容垂蜗,TextView就會被鍵盤遮擋楷扬。
- <activity> windowSoftInputMode=“adjustPan”,彈出鍵盤:
鍵盤彈出贴见,由于EditText到底部的距離小于鍵盤的高度烘苹,所以,activity的內(nèi)容整體向上滾動片部,以使EditText不給遮擋镣衡。
如果EditText到底部的距離大于鍵盤高度,activity內(nèi)容不會滾動。