我的应用程序底部有一个垂直滑动抽屉。当软键盘打开时,它会向上推动抽屉的标签,使其位于键盘顶部。我实际上希望它保持在屏幕的底部,当键盘显示时隐藏。
其他人遇到这个问题?知道如何解决它吗?
您只需在活动标签内的windowSoftInputMode
文件中将Activity的adjustPan
flag切换到AndroidMainfest.xml
即可。
查看official documentation了解更多信息。
<activity
...
android:windowSoftInputMode="adjustPan">
</activity>
到目前为止,答案并没有帮助我,因为我在textView下面有一个按钮和一个textInput字段(并排),它一直被键盘隐藏,但这解决了我的问题:
android:windowSoftInputMode="adjustResize"
android:windowSoftInputMode="stateHidden|adjustNothing"
这段代码有效。
将以下代码添加到Manifest文件的“活动”中。
android:windowSoftInputMode="adjustResize"
这对我来说是最好的
android:windowSoftInputMode="adjustNothing"
试试吧!
对于滚动视图:
如果在您的Android Manifest中添加android:windowSoftInputMode="stateHidden|adjustPan"
后仍然无效。
它可能会受到影响,因为当键盘出现时,它将进入滚动视图,如果您的按钮/任何对象不在滚动视图中,则对象将跟随键盘并移动其位置。
查看你的按钮所在的xml,并确保它位于滚动视图支架下,而不是它。
希望这会有所帮助。 :d
好吧,我已经看过这些答案,但在我的情况下,我遇到了同样的问题,并通过一个非常方便和最简单的解决方案避难,涉及在您的xml文件中的Scrollview标记中放入一个非常小的无辜属性。那是
android:isScrollContainer="false"
祝好运!
这个对我有用
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
活动的主窗口不会调整大小以便为软键盘腾出空间。相反,窗口的内容将自动平移,以便键盘不会遮挡当前焦点,用户可以随时看到他们正在键入的内容。
android:windowSoftInputMode="adjustPan"
这可能是您想要的更好的解决方案。
试着用这个:
android:windowSoftInputMode="stateHidden|adjustPan"
此代码可能对您有所帮助。在你的oncreate
方法中使用它。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
这些答案都没有对我有用,但是这样做了:
android:windowSoftInputMode="adjustNothing"
在我的情况下,我需要键盘保持隐藏,只需点击按钮后我的布局需要调整,所以我只是在清单中添加了这个命令,它是超级正确的。
android:windowSoftInputMode="stateHidden|adjustResize"
包含在您要显示的活动下的清单文件中。但请确保不使用全屏活动
android:windowSoftInputMode="adjustPan"
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
这个适合我。
@manifest在你的活动中:
android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
当你想在打开键盘时隐藏视图。
将此添加到清单文件`中的Activity中
机器人:windowSoftInputMode = “stateHidden | adjustPan”`
在我的情况下,按钮被推高的原因是因为它们上面的视图是一个ScrollView
,并且无论我设置的android:windowSoftInputMode
值是什么值,按钮都被推到了键盘上方。
通过在位于按钮上方的android:isScrollContainer="false"
上设置ScrollView
,我能够避免我的底部按钮被软键盘向上推。
您可以尝试动态添加此属性,方法是将以下代码放入活动的onCreate
方法中:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
这对我有用,而不是:
android:windowSoftInputMode="adjustPan"
didnt。
这些答案对我没有帮助。所以我尝试了这个:
android:windowSoftInputMode="adjustResize"
这就像一个魅力,现在我的应用程序的标题不会消失。它更顺畅。
要以编程方式在片段中执行此操作,您可以使用以下代码
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
把它放在onResume()中
只需添加一行......
在你的android:windowSoftInputMode="stateHidden|adjustPan"
所需的活动中添加manifest file
。
我刚刚解决了:) :)
对于未来的读者。
我想要对这个问题进行具体控制,所以这就是我所做的:
从片段或活动中隐藏您的其他视图(键盘启动时不需要),然后恢复它们以解决此问题:
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方法中。