显示软键盘时向上移动布局?

Din*_*dal 129 user-interface android android-keypad android-layout

我在RelativeView中有一些元素,对齐底部属性设置,当软键盘出现时,元素被软键盘隐藏.

我希望它们向上移动,以便如果有足够的屏幕空间,它们会显示在键盘上方,或者使键盘上方的部分可滚动,这样用户仍然可以看到元素.

关于如何处理这个的任何想法?

Chr*_*Orr 96

是的,请查看Android开发人员网站上的这篇文章,其中介绍了框架如何处理出现的软键盘.

android:windowSoftInputMode属性可用于指定基于每个活动的内容:布局是否已调整大小或是否滚动等.


Bob*_*obs 85

您还可以在onCreate()方法中使用此代码:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,即使我设置adjustPan screnn只移动到我点击的编辑文本,但不是整个布局 (10认同)

Ser*_*kyi 29

为您的活动添加AndroidManifest.xml:

android:windowSoftInputMode="adjustPan|adjustResize"
Run Code Online (Sandbox Code Playgroud)

  • 根据文档,如果你在这里使用两个"adjust ..."标志,则行为未指定.请参阅http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft (21认同)

小智 22

更改您的清单文件的活动,如

windowSoftInputMode="adjustResize"
Run Code Online (Sandbox Code Playgroud)

要么

onCreate()在活动类中对您的方法进行更改,例如

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Run Code Online (Sandbox Code Playgroud)

  • 你为什么用不同的旗帜? (6认同)

Ron*_*iya 16

我面临的类似问题我的布局包括里面的滚动视图.每当我尝试在EditText中选择文本时,复制/剪切/粘贴操作栏都会向下移动,因为它不会调整布局大小

android:windowSoftInputMode="adjustPan"
Run Code Online (Sandbox Code Playgroud)

通过将其修改为如下

1)AndroidManifest.xml

android:windowSoftInputMode="stateVisible|adjustResize"
Run Code Online (Sandbox Code Playgroud)

2)style.xml文件,在活动样式中

<item name="android:windowActionBarOverlay">true</item>
Run Code Online (Sandbox Code Playgroud)

有效.!!!!!!!!!!!!

  • 活动风格真实是什么意思? (5认同)

Zah*_*.HY 12

在AndroidManifest.xml中,不要忘记设置:

 android:windowSoftInputMode="adjustResize"
Run Code Online (Sandbox Code Playgroud)

对于ScrollView中的RelativeLayout,设置:

 android:layout_gravity="center" or android:layout_gravity="bottom" 
Run Code Online (Sandbox Code Playgroud)

会没事儿的


Pra*_*ddy 9

<activity name="ActivityName"
    android:windowSoftInputMode="adjustResize">
    ...
</activity>
Run Code Online (Sandbox Code Playgroud)

在要滚动的布局周围添加 NestedScrollView,这将完美地工作


Rah*_*war 7

for line中的oncreate methode insert中的Activity

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Run Code Online (Sandbox Code Playgroud)

以及onCreate方法中的片段

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Run Code Online (Sandbox Code Playgroud)


Hee*_*ora 7

滚动屏幕有3个步骤.

  1. 写入您的活动的清单文件:

机器人:windowSoftInputMode = "adjustResize"

  1. 在活动的oncreate()方法中添加以下行

getWindow()setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE).

  1. 然后将整个视图放在XML文件的"Scrollview"中,如:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:background="@drawable/bg"
    android:layout_height="match_parent" 
    > 
    <RelativeLayout
         android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center" >
        <TextView />
         .........
        <TextView />
        <EditText >
            <requestFocus />
        </EditText>
        <Button />
    </RelativeLayout>
 </ScrollView>
Run Code Online (Sandbox Code Playgroud)

PS别忘了在父相对布局中添加android:layout_gravity ="center".


Coo*_*ind 6

我尝试了迭戈·拉米雷斯(DiegoRamírez)的方法,它有效。在AndroidManifest中:

    <activity
        android:name=".MainActivity"
        android:windowSoftInputMode="stateHidden|adjustResize">
        ...
    </activity>
Run Code Online (Sandbox Code Playgroud)

在activity_main.xml中:

<LinearLayout ...
    android:orientation="vertical">

<Space
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_weight="1" />

<EditText
    android:id="@+id/edName"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:hint="@string/first_name"
    android:inputType="textPersonName" />

<EditText ...>
...
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)


Mar*_*hev 6

在查看了很多解决方案后,这对我有用:

将以AndroidManifest.xml下行添加到项目清单文件中的活动声明中。

android:windowSoftInputMode="stateHidden|adjustPan" 
Run Code Online (Sandbox Code Playgroud)

代码应该如下所示:

    <activity
        android:name=".MainActivity"
        android:screenOrientation="landscape"
        android:windowSoftInputMode="stateHidden|adjustPan">
    </activity>
Run Code Online (Sandbox Code Playgroud)


Dar*_*ush 5

我刚刚将以下行添加到顶级布局中,一切正常:

android:fitsSystemWindows="true"
Run Code Online (Sandbox Code Playgroud)