我的应用程序底部有一个垂直滑动抽屉。当软键盘打开时,它会向上推动抽屉的标签,使其位于键盘顶部。我实际上希望它保持在屏幕的底部,当键盘显示时隐藏。
其他人遇到此问题?知道如何解决它吗?
答案 0 :(得分:557)
您只需在活动代码中的windowSoftInputMode
文件中将活动的adjustPan
标记切换为AndroidMainfest.xml
即可。
查看official documentation了解详情。
<activity
...
android:windowSoftInputMode="adjustPan">
</activity>
答案 1 :(得分:147)
这些答案都没有对我有用,但这就是诀窍:
android:windowSoftInputMode="adjustNothing"
答案 2 :(得分:72)
在我的情况下,按钮被推高的原因是因为它们上方的视图是ScrollView
,并且无论android:windowSoftInputMode
的值是什么,它都会在键盘上方按下按钮时折叠我正在设置。
通过在按钮上方的android:isScrollContainer="false"
上设置ScrollView
,我可以避免我的底部按钮被软键盘向上推。
答案 3 :(得分:60)
您可以尝试动态添加此属性,方法是将以下代码放入活动的onCreate
方法中:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
这对我有用,而不是:
android:windowSoftInputMode="adjustPan"
didnt。
答案 4 :(得分:34)
这些答案对我没有帮助。所以我尝试了这个:
android:windowSoftInputMode="adjustResize"
这就像一个魅力,现在我的应用程序的标题不会消失。它更顺畅。
答案 5 :(得分:9)
要在片段中以编程方式执行此操作,您可以使用以下代码
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
将其放在onResume()
中答案 6 :(得分:7)
为未来的读者。
我想要对这个问题进行具体控制,所以这就是我所做的:
从片段或活动中隐藏您的其他观看次数(键盘启动时不需要),然后将其恢复以解决此问题:
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);
}
}
});
答案 7 :(得分:7)
对于xamarin用户,将此代码添加到MainActivity类的Activity属性
WindowSoftInputMode =Android.Views.SoftInput.AdjustNothing
或者您可以将此代码Window.SetSoftInputMode(Android.Views.SoftInput.AdjustNothing)
添加到MainActivity类的OnCreate方法中。
答案 8 :(得分:7)
只需添加一行......
在android:windowSoftInputMode="stateHidden|adjustPan"
的所需活动中添加manifest file
。
我刚刚解决了:) :)
答案 9 :(得分:6)
到目前为止,答案对我没有帮助,因为我在textView下面有一个按钮和一个textInput字段(并排),它一直被键盘隐藏,但这解决了我的问题:
android:windowSoftInputMode="adjustResize"
答案 10 :(得分:6)
android:windowSoftInputMode="stateHidden|adjustNothing"
此代码有效。
答案 11 :(得分:5)
将以下代码添加到Manifest文件的“活动”中。
android:windowSoftInputMode="adjustResize"
答案 12 :(得分:4)
这是对我有用的最好的
android:windowSoftInputMode="adjustNothing"
试试吧!
答案 13 :(得分:3)
我已经看过这些答案,但在我的情况下,我遇到了同样的问题并通过一个非常方便和最简单的解决方案避难,其中涉及在您的xml文件中的Scrollview标记中放入一个非常小的无辜属性。那是
android:isScrollContainer="false"
祝你好运!
答案 14 :(得分:3)
这个为我工作了
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
答案 15 :(得分:2)
滚动视图:
如果在Android Manifest中添加android:windowSoftInputMode="stateHidden|adjustPan"
后仍然无效。
可能会受到影响,因为当键盘出现时,它将进入滚动视图,如果您的按钮/任何对象不在滚动视图中,则对象将跟随键盘并移动其位置。
检查你的按钮所在的xml,并确保它位于你的滚动查看支架下,而不是它。
希望这会有所帮助。 :D
答案 16 :(得分:2)
活动的主窗口不会调整大小以便为软键盘腾出空间。相反,窗口的内容将自动平移,以便键盘不会遮挡当前焦点,用户可以随时看到他们正在键入的内容。
android:windowSoftInputMode="adjustPan"
这可能是您想要的更好的解决方案。
答案 17 :(得分:1)
我在这个问题上苦苦挣扎了一段时间。有些解决方案有效,但是我的某些观点仍然被推高,而另一些则没有。。。因此它并不能完全解决我的问题。最后,工作是在活动标签的清单中添加以下代码...
android:windowSoftInputMode="stateHidden|adjustPan|adjustResize"
祝你好运
答案 18 :(得分:1)
此代码可能对您有所帮助。在oncreate
方法中使用它。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
答案 19 :(得分:1)
我通过添加
解决了我的问题 android:windowSoftInputMode="adjustNothing"
在清单文件中添加。
并使Recyclerviews约束isScrollContainer设置为false。
android:isScrollContainer="false"
答案 20 :(得分:1)
他们都不为我工作,尝试这个
private void scrollingWhileKeyboard() {
drawerlayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect r = new Rect();
try {
drawerlayout.getWindowVisibleDisplayFrame(r);
int screenHeight = drawerlayout.getRootView().getHeight();
int keypadHeight = screenHeight - r.bottom;
if (keypadHeight > screenHeight * 0.15) {
tabLayout.setVisibility(View.GONE);
} else {
tabLayout.setVisibility(View.VISIBLE);
}
} catch (NullPointerException e) {
}
}
});
}
答案 21 :(得分:1)
当您想在打开键盘时隐藏视图时。
将此添加到清单文件中的“活动”中
android:windowSoftInputMode =“ stateHidden | adjustPan”`
答案 22 :(得分:1)
@在您的活动中显示:
android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
答案 23 :(得分:1)
$part_column
这个适合我。
答案 24 :(得分:1)
在我的情况下,我需要键盘保持隐藏状态,点击按钮后我的布局需要调整,所以我只是在清单中添加了这个命令并且它非常正确。
android:windowSoftInputMode="stateHidden|adjustResize"
答案 25 :(得分:1)
包含在您要显示的活动下的清单文件中。但请确保不使用全屏活动
android:windowSoftInputMode="adjustPan"
答案 26 :(得分:1)
尝试使用它:
android:windowSoftInputMode="stateHidden|adjustPan"
答案 27 :(得分:0)
有两种方法可以解决此问题。 转到AndroidManifist.xml,然后在您的活动名称中添加此行
android:windowSoftInputMode="adjustPan"
如下面的代码所示,我已添加到Register Activity。
<activity android:name=".Register"
android:windowSoftInputMode="adjustPan">
第二种方法,进入您的活动,然后在onCreate方法中添加以下代码。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);