键盘显示时如何向上移动整个布局?

时间:2014-12-17 15:05:37

标签: android android-softkeyboard

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_gravity="bottom"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content" /> 
        </LinearLayout>    

</FrameLayout>  
清单中的

 android:windowSoftInputMode="adjustPan"

初始行为:

enter image description here

当前行为:

enter image description here

所需行为

enter image description here

如何实现所需的布局行为? adjustResize 不适合,因为此选项会调整布局大小。

感谢您的回答!

9 个答案:

答案 0 :(得分:4)

您可能想看看this answer。建议:

将Window SoftInput Mode属性设置为adjustPan和adjustResize

<activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>

答案 1 :(得分:2)

获得该结果的唯一方法是调整大小布局。 使用android:windowSoftInputMode =&#34; adjustResize&#34;

答案 2 :(得分:2)

在你的清单中尝试这个:

android:windowSoftInputMode="adjustResize|stateUnchanged"

答案 3 :(得分:1)

检查包含EditText和Button的布局是否为RelativeLayout。

答案 4 :(得分:1)

尝试使用FrameLayout中的RelativeLayout媒体资源将alignParentBottom="true"更改为LinearLayout

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_alignParentBottom="true"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content" /> 
        </LinearLayout>    

</RelativeLayout>  

答案 5 :(得分:1)

您无法通过adjustPan实施该功能,因为来自official guide

  

活动的主窗口未调整大小以便为软键盘腾出空间。相反,窗口的内容会自动平移,以便键盘不会遮挡当前焦点,用户可以随时看到他们正在键入的内容。这通常不如调整大小,因为用户可能需要关闭软键盘才能进入并与窗口的模糊部分进行交互。

您的Button低于当前焦点EditText

答案 6 :(得分:1)

通过从活动中删除以下行并从清单中删除 android:windowSoftInputMode ,我获得了之前隐藏的整个布局滚动

  

this.getWindow()。setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

请检查此输出视频链接: https://mega.nz/#!TpRCWZjY!TqDzv0Yn3Q24PR1JAdH8kRVeDf2iSa1LQbNBgF0SVHk

答案 7 :(得分:1)

我不相信有一种简单的方法可以做到这一点。至少不像设置标志那么简单。 我有类似的情况,希望键盘上升到远低于所选EditText的视图级别。我最终使用了这个答案: How to check visibility of software keyboard in Android?

并在键盘可见时手动调整我的视图大小。

答案 8 :(得分:0)

只需在活动中使用此属性

即可
android:windowSoftInputMode="adjustPan"