Android:我如何防止软键盘推动我的观点?

我的应用程序底部有一个垂直滑动抽屉。 当软键盘打开时,它将抽屉向上推,因此它位于键盘上方。 我实际上希望它保持在屏幕的底部,在显示键盘时隐藏起来。

其他人遇到这个问题? 知道如何解决它?

您可以简单地将活动的windowSoftInputMode标志切换为“adjustPan”。 查看官方文档获取更多信息。

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

没有任何答案为我工作,但这个伎俩:

 android:windowSoftInputMode="adjustNothing" 

在我的情况下,button被推上去的原因是因为他们上面的视图是一个ScrollView ,并且无论我设置的android:windowSoftInputMode值是什么值,它都会按下键盘上方的button。

我能够通过在位于button上方的ScrollView上设置android:isScrollContainer="false"来避免我的底部一排button被软键盘推上去。

您可以尝试dynamic添加此属性,方法是在活动的onCreate方法中放入以下代码:

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

这为我工作,而不是:

 android:windowSoftInputMode="adjustPan" 

didnt。

这些答案对我没有帮助。 所以我试过这个:

 android:windowSoftInputMode="adjustResize" 

这就像一个魅力,现在我的应用程序的头不会消失。 它更平滑。

到目前为止的答案并没有帮助我,因为我有一个button和textInput下面的textView下面的键盘隐藏,但已经解决了我的问题:

 android:windowSoftInputMode="adjustResize" 

为未来的读者。

我想要对这个问题进行具体的控制,所以这就是我所做的:

从片段或活动中, 隐藏其他视图 (键盘启动时不需要), 然后恢复它们来解决此问题:

  rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect r = new Rect(); rootView.getWindowVisibleDisplayFrame(r); int heightDiff = rootView.getRootView().getHeight() - (r.bottom - r.top); if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard... //ok now we know the keyboard is up... view_one.setVisibility(View.GONE); view_two.setVisibility(View.GONE); }else{ //ok now we know the keyboard is down... view_one.setVisibility(View.VISIBLE); view_two.setVisibility(View.VISIBLE); } } }); 

对于xamarin用户,将此代码添加到MainActivity类的Activity属性中,

 WindowSoftInputMode =Android.Views.SoftInput.AdjustNothing 

或者您可以将此代码Window.SetSoftInputMode(Android.Views.SoftInput.AdjustNothing)添加到MainActivity类的OnCreate方法。

将以下代码添加到Manifest文件的“活动”中。

 android:windowSoftInputMode="adjustResize" 

只需添加一行…

manifest file必需活动中添加android:windowSoftInputMode="stateHidden|adjustPan"

我刚刚解决了:) 🙂

这是最适合我的工作

 android:windowSoftInputMode="adjustNothing" 

尝试一下!

要在片段中以编程方式执行此操作,可以使用以下代码

 getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 

把它放在onResume()

活动的主窗口不会调整为软键盘腾出空间。 相反,窗口的内容将被自动移动,这样当前的焦点永远不会被键盘遮挡,用户总是可以看到他们正在input的内容。

 android:windowSoftInputMode="adjustPan" 

这可能是一个更好的解决scheme,你想要什么。

 android:windowSoftInputMode="stateHidden|adjustNothing" 

此代码工作。

尝试使用这个:

 android:windowSoftInputMode="stateHidden|adjustPan" 

滚动查看:

如果在您的Android Manifest中添加了android:windowSoftInputMode="stateHidden|adjustPan"后仍然不起作用。

它可能会受到影响,因为当键盘出现时,它将进入滚动视图,如果您的button/任何对象不在您的滚动视图中,那么对象将沿着键盘移动其位置。

检查你的xml在哪里你的button,并确保它在你的滚动查看括号,而不是它。

希望这有助于。 :d

此代码可能会帮助你。 在你的oncreate方法中使用它。

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

包含在您的清单文件下你想要显示的活动。但请确保不要使用全屏活动

机器人:windowSoftInputMode = “adjustPan”

那么我已经看到了这些答案,但在我的情况下,我陷入了同样的问题,并通过一个非常方便和最简单的解决scheme避难,涉及到放置在您的XML文件中的Scrollview标记非常小的天真的属性。 那是

 android:isScrollContainer="false" 

祝你好运!

在我的情况下,我需要键盘保持隐藏,只需按一下button,我的布局需要调整,所以我只是在清单中添加了这个命令,它超级正确。

 android:windowSoftInputMode="stateHidden|adjustResize"