Android 当显示软键盘时,如何向上移动布局

Android 当显示软键盘时,如何向上移动布局,android,android-softkeyboard,Android,Android Softkeyboard,我有一个登录屏幕,其中有两个editText和一个登录按钮。问题是,当我开始打字时,软键盘会显示出来并覆盖登录按钮。当布局出现时,我如何将其向上推或推到键盘上方 我不想使用滚动视图,只想在不向下滚动的情况下实现它。请给我提个建议。提前感谢。在活动对应的android清单文件中尝试此操作 <activity android:windowSoftInputMode="adjustPan"> </activity> 将windowSoftInputMode属性设置为adjus

我有一个登录屏幕,其中有两个
editText
和一个登录按钮。问题是,当我开始打字时,软键盘会显示出来并覆盖登录按钮。当布局出现时,我如何将其向上推或推到键盘上方


我不想使用
滚动视图
,只想在不向下滚动的情况下实现它。请给我提个建议。提前感谢。

在活动对应的android清单文件中尝试此操作

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

windowSoftInputMode
属性设置为
adjustPan
adjustResize

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


利用相对布局,它将调整视图,以便您在键入文本时可以看到该视图

我通过了解设备上软键盘的状态以某种方式实现了这一点。显示键盘时,我将布局移到y位置,未显示时移回其原始位置。这很好,接下来在
onCreate()方法中使用此代码:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
因此,实现这一目标的正确方法是在您的清单中声明:

<activity name="EditContactActivity"
        android:windowSoftInputMode="stateVisible|adjustResize">

    </activity>
<activity android:name=".Login"
        android:fitsSystemWindows="true"
        android:windowSoftInputMode="stateHidden|adjustPan"
</activity>

这对我来说很有魅力

getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

将此行放入manifest.xml中的活动声明时间

<android:windowSoftInputMode="adjustPan">

这就是所需的全部:

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

将其放入清单文件中的活动声明中

或者,如果需要,可以添加活动的onCreate()方法

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
只有


在清单文件内的活动标记中,当软键盘出现时,它会改变主布局的大小,您需要做的是为该主布局创建一个侦听器,并在该侦听器中添加代码
scrollT0(x,y)
以向上滚动。

您应该使用

android:windowSoftInputMode="adjustPan|stateHidden"

在声明活动的
AndroidManifest.xml
文件中。当键盘显示在布局中时,这将调整布局内容

如果您正在使用xamarin,您可以将以下代码 MainActivity类的activity属性中的WindowSoftInputMode=Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResize
。 例如,现在活动属性如下所示

    [Activity(WindowSoftInputMode =Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResize)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
    {
        //some code here.
    }
在布局文件的主布局上添加属性,并

android:windowSoftInputMode="adjustResize"
在Activty上的Manifest.xml文件中添加行


这对我来说是完美的工作。

这肯定对你有用


android:windowSoftInputMode=“adjustPan”我通过在清单中添加代码来解决这个问题:

<activity name="EditContactActivity"
        android:windowSoftInputMode="stateVisible|adjustResize">

    </activity>
<activity android:name=".Login"
        android:fitsSystemWindows="true"
        android:windowSoftInputMode="stateHidden|adjustPan"
</activity>

当键盘显示时,我可以将布局向上移动,但在键盘隐藏时无法移动到其原始位置,你能帮我吗?这不是现成的,但将其更改为
使其正常工作。请提及你使用的安卓版本。有些答案在某些版本上可能完全没有用处。正如@nickiaconis所说,我不需要'adjustPan'参数,它对我有效,谢谢。Xamarin.Forms portable project是否有同等版本?因此,我不必对每个目标平台都这样做。设置必须是下表中列出的值之一,或者是一个“状态…”值加上一个“调整…”值的组合。在任一组中设置多个值(例如多个“状态…”值)会产生未定义的结果。谢谢,这很有帮助。由于某种原因,此方法不适用于我。但使用
软输入\u调整\u调整大小
而不是调整平移,适用于memy loyout第一次向上移动,但当关闭键盘并再次打开时,不会移动。看起来stateVisible会在活动开始时使其打开,因此,实际上不需要向上推键盘。清单代码是错误的,这样行为是未定义的(您设置了两个冲突值,请参见offdoc:,
android:WindowsOfInputMode
description)@kiwicomb123,选择一个参数,否则系统将为您选择(此选择可能会在另一个设备/API验证上更改)fitsSystemWindows与keyboard@TimCastelijns,在我的情况下(全屏活动),这很重要。如果设置为
false
,视图将不会向上移动。您可以添加一些解释吗…?只需转到您的AndroidManifest.xml文件,并将此标记添加到要在键盘上向上滚动的活动弹出窗口我正在使用ConstraintLayout,此解决方案不适用于我。在编写此答案时,Android布局中未添加ConstraintLayout。请在这个线程上找到最适合您的任何其他解决方案。一旦我有时间,我肯定会为你更新我的答案。谢谢你的报道。fitSystemWindows为我工作。