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"