美文网首页
windowSoftInputMode属性详解

windowSoftInputMode属性详解

作者: __稳__ | 来源:发表于2017-04-21 10:56 被阅读0次

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

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

    • adjustResize当键盘弹出时,从下往上压缩activity布局,压缩的距离等于键盘的高度。压缩之后,不管EditText是否可见。

    • adjustPan当键盘弹出时,如果EditText被键盘遮挡,activity内容从下向上滚动,以保证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>
    

    界面效果:


    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内容不会滚动。

    相关文章

      网友评论

          本文标题:windowSoftInputMode属性详解

          本文链接:https://www.haomeiwen.com/subject/unnlzttx.html