windowSoftInputMode属性详解

2017-04-21  本文已影响0人  __稳__

当EditText获取到焦点,键盘弹出,为保证EditText不被遮挡,activity的布局会做一些调整,<activity>的windowSoftInputMode属性便控制此时activity的布局如何调整。

windowSoftInputMode常用两个值,分别是 adjustResize, adjustPan

<?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>

界面效果:


device-2017-04-21-105353.png
  1. <activity> windowSoftInputMode=“adjustResize”,弹出键盘:
adjustResize.png

键盘弹出,activity从下而上压缩到键盘上边空间区域大小,由于TextView是alignParentBottom底部对齐的,所以出现被键盘顶上去的效果。
如果xml中最外层布局是LinearLayout,压缩之后,由于可见空间不足以展示所有内容,TextView就会被键盘遮挡。

  1. <activity> windowSoftInputMode=“adjustPan”,弹出键盘:
adjustPan.png

键盘弹出,由于EditText到底部的距离小于键盘的高度,所以,activity的内容整体向上滚动,以使EditText不给遮挡。
如果EditText到底部的距离大于键盘高度,activity内容不会滚动。

上一篇下一篇

猜你喜欢

热点阅读