还有其他人遇到这个问题吗?知道如何解决吗?
#1 楼
您只需在活动标签内的windowSoftInputMode
文件中将Activity的adjustPan
标志切换为AndroidMainfest.xml
。查看官方文档以获取更多信息。
<activity
...
android:windowSoftInputMode="adjustPan">
</activity>
如果您的容器没有改变尺寸,那么您高度可能设置为“匹配父级”。如果可能,请将父级设置为“包装内容”,或者将约束条件设置为在父级顶部和底部带有约束的约束布局。
父级容器将缩小以适应可用空间,因此您的内容可能应该放在内部角度视图以防止(取决于电话制造商和所选择的布局...)
内容被粉碎在一起
内容从屏幕上垂下
由于即使在键盘下方,它也位于键盘下方
,但内容可能会出现问题1-3。
评论
我不想平移视图,我希望它在原处保持静止,只是让键盘遮盖住要遮盖的一切。
–克里斯托弗·佩里(Christopher Perry)
2010-11-17 23:41
通过平移,这意味着视图将被滚动以使您键入的视图可见。换句话说,如果刚出现的键盘没有掩盖聚焦视图,它将保持静态。
–亚历山大·奥利尼科夫(Alexander Oleynikov)
2010-11-18 20:42
我正面临着同样的问题。在清单文件中将windowSoftInputMode标志设置为“ adjustPan”。但不起作用。如何解决
–Subrat
2011年5月31日晚上10:23
对于在屏幕底部有一排按钮而在其上方具有ScrollView的情况没有帮助。无论windowSoftInputMode中的值是多少,按钮都会被上推。
– Artem Russakovskii
11-10-17在21:44
不能零碎工作。怎么做?
– Prashanth Debbadwar
16-4-19的7:26
#2 楼
没有一个答案对我有用,但这确实成功了,将这个属性添加到您的activity
中的AndroidManifest.xml
标记中:<activity
...
android:windowSoftInputMode="adjustNothing">
</activity>
评论
这使键盘看起来像覆盖内容,而无需进行布局来重新计算其高度。
–重新继承
2014年6月4日上午9:40
这解决了键盘推高内容的问题,尽管这是我和OP想要实现的目标。
–丹尼尔·道格拉斯(Daniel Douglas)
2014年7月1日15:32
您可以从@Dom借用getWindow()。setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);以编程方式设置此值
–布朗·戴维斯
2015年9月18日,下午5:32
与其他答案不同(果冻豆4.1),这确实对我有用
–Virus721
2015年12月10日在9:52
完善!就我而言,它也起作用。我正在显示一个内部具有edittext的对话框。对话框打开后,键盘也会出现。我已经尝试过“ adjustPan”,但是它阻止了键盘的出现功能。因此,在我的情况下,“ adjustNothing”效果更好。
– sembozdemir
16年1月28日在14:03
#3 楼
就我而言,按下按钮的原因是因为它们上方的视图是ScrollView
,而无论我设置的android:windowSoftInputMode
值是多少,按钮都被向上推到键盘上方时它就会折叠。通过在按钮上方的
android:isScrollContainer="false"
上设置ScrollView
,可以避免软键盘向上推按钮的下一行。评论
但是在这种情况下,软键盘覆盖了屏幕的一部分,无法向下滚动。似乎只有一种方法可以防止底部面板显示在键盘顶部-在键盘打开时将其隐藏...
–德米特里
2012年7月16日在21:22
就是这个!我认为此设置非常有趣,因为这是我发现达到“ adjustNothing”缺失属性效果的唯一方法!
– rupps
13年3月3日在23:52
我将其与Textview一起使用很棒的tnx
– Sunil Chaudhary
16年8月9日在9:13
@Artem Russakovskii我不知道您是谁,但我爱您提供此解决方案。非常感谢。
–级别
17年1月12日在14:56
@Artem Russakovskii,这非常好用。非常感谢。
– SkypeDogg
19年1月18日在10:15
#4 楼
您可以尝试通过在活动的onCreate
方法中添加以下代码来动态添加此属性:getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
这对我有用,但是:
android:windowSoftInputMode="adjustPan"
同伴。
评论
您是否在AndroidManifest.xml中添加了android:windowSoftInputMode =“ adjustPan”?
– Habeeb Perwad
2014年4月29日在11:11
不,因为它对我没有任何影响。第一行代码完成了这项工作。 :) @HabeebPerwad
–Dom
2014年6月8日在21:59
我在AndroidManifest.xml文件中添加了秒行。我认为那之后才奏效。所以问。
– Habeeb Perwad
2014年6月9日4:50
@Dom,如何使用“ getWindow()。setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);”碎片?
–图萨·戈尼亚(Tushar Gogna)
2014年9月12日下午5:05
最后!这可行!我有一个控制器(从FragmentActivity扩展)和一些附加到它的视图(这些视图从RelativeLayout扩展)。因此,在麻烦的视图中,我做了controller.getWindow()...就像你说的那样。作品
– Alaa M.
15年7月20日在21:25
#5 楼
这些答案对我没有帮助。因此,我尝试了以下操作:android:windowSoftInputMode="adjustResize"
这就像一个符咒,现在我应用程序的标题没有消失。更平滑。
评论
这对我来说几乎完美。唯一的问题是键盘的建议栏/行仍然隐藏了我的布局。你有遇到这样的问题吗?
–苏菲安
18年8月29日在7:35
我还没有遇到这个问题。 @苏菲安
– amalBit
18年8月29日在8:55
那时我还没有遇到任何问题。现在我不确定。 @苏菲安
– amalBit
18年8月29日在11:43
对于那些可能遇到类似问题的人,这可能是由于TabLayout所致。一旦将其可见性设置为View.GONE,问题就消失了。现在可能是重新设计布局的时候了。
–苏菲安
18年9月8日在18:02
#6 楼
要以片段方式编程地执行此操作,可以使用以下代码getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
将其放在onResume()中
#7 楼
这个为我工作了getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
#8 楼
为了将来的读者。我希望对此问题进行特定控制,所以我要做的是:
从片段或活动中隐藏其他视图(不是键盘启动时需要),然后将其还原以解决此问题:
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);
}
}
});
评论
@天网你是绝对正确的!这是我用于自己的问题的自定义解决方案。
–石油
16年1月18日在18:57
嘿,这真是太好了。但是,在键盘关闭的情况下,视图会在很短的时间内(毫秒)切换到可见状态。因此,我没有直接设置可见性,而是使用view.post(Runnable runnable)并从那里设置可见性。结果对我来说很棒
–daisura99
16-09-21在9:35
@Petro好吧,我绝对讨厌Android
–安德鲁(Andrew)
9月18日下午14:12
是的,这将是我永远的最后一个android项目。之后,我将切换到iOS或完全停止对应用程序进行编程。真可怕
–安德鲁(Andrew)
9月21日13:04
@Andrew Adobe XD具有导出到Flutter功能的功能,请检查一下...可能会让您的生活更轻松
–石油
9月23日13:51
#9 楼
只需添加一行...在您的
android:windowSoftInputMode="stateHidden|adjustPan"
的必需活动中添加manifest file
。我刚刚解决了:) :)
#10 楼
这是最适合我的最佳选择android:windowSoftInputMode="adjustNothing"
尝试一下!
#11 楼
对于xamarin用户,将此代码添加到MainActivity类的Activity属性中,或者您可以将此代码Window.SetSoftInputMode(Android.Views.SoftInput.AdjustNothing)
添加到MainActivity类的OnCreate方法中。#12 楼
到目前为止,答案没有帮助我,因为在textView下方有一个按钮和一个textInput字段(并排),该字段一直被键盘隐藏,但这已经解决了我的问题:android:windowSoftInputMode="adjustResize"
#13 楼
将以下代码添加到清单文件的“活动”中。android:windowSoftInputMode="adjustResize"
评论
这很好。但是,仅建议一下,使用百分比时效果不佳。因为它重新调整了一些元素。因此,如果您的约束元素具有百分比,那么您将遇到问题。使用wrap_content代替,它将很好地工作。
–蒂亚戈·席尔瓦(Thiago Silva)
6月1日14:16
#14 楼
android:windowSoftInputMode="stateHidden|adjustNothing"
此代码有效。
评论
我认为android:windowSoftInputMode =“ stateHidden | adjustPan”也应该起作用。
– Arthur Sady Cordeiro Rossetti
18年5月15日在13:02
#15 楼
好吧,我已经看过这些答案了,但就我而言,我遇到了同样的问题,并且通过一种非常方便,最简单的解决方案避难了,该解决方案涉及将一个很小的无辜属性放入xml文件中的Scrollview标记中。那是android:isScrollContainer="false"
祝你好运!
#16 楼
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
这个为我工作。
#17 楼
对于滚动视图:如果在Android清单中添加了
android:windowSoftInputMode="stateHidden|adjustPan"
之后仍然无法正常工作。 它可能会受到影响,因为当键盘出现时,它将进入滚动视图;如果按钮/任何对象不在滚动视图中,则这些对象将跟随键盘并移动其位置。
检查您的按钮所在的xml,并确保它位于滚动视图括号内,而不是超出它。
希望这对您有所帮助。 :D
#18 楼
就我而言,我需要使键盘保持隐藏状态,并且在单击按钮后就需要调整布局,因此我只在清单中添加了此命令,它就变得非常正确。android:windowSoftInputMode="stateHidden|adjustResize"
#19 楼
当您想在打开键盘时隐藏视图时。将其添加到清单文件中的活动中
android:windowSoftInputMode="stateHidden|adjustPan"
#20 楼
他们都没有为我工作,请尝试这个 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 楼
活动的主窗口不会调整大小以为软键盘腾出空间。而是,窗口的内容将自动平移,以使当前焦点不会被键盘遮挡,并且用户始终可以看到他们在键入什么。android:windowSoftInputMode="adjustPan"
此可能是您想要的更好的解决方案。
#22 楼
尝试使用此功能:android:windowSoftInputMode="stateHidden|adjustPan"
#23 楼
此代码可以为您提供帮助。在您的oncreate
方法中使用它。 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
评论
我尝试了这个,但是我遇到了一个问题,即视图将视图的底部切掉了一部分,并推了视图以覆盖上面的时间?关于什么布局发生变化或需要什么的任何想法? stackoverflow.com/questions/39909897/…
–Lion789
16-10-7在6:47
#24 楼
包括在要显示的活动下的清单文件中,但请确保不要使用全屏活动android:windowSoftInputMode="adjustPan"
#25 楼
@manifest在您的活动中:android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
#26 楼
我已经解决了问题,方法是在清单文件中添加 android:windowSoftInputMode="adjustNothing"
,并将Recyclerviews约束isScrollContainer设置为false。
android:isScrollContainer="false"
#27 楼
我在这个问题上苦苦挣扎了一段时间。有些解决方案有效,但是我的某些观点仍然被推高,而另一些则没有。。。因此它并不能完全解决我的问题。最后,工作是在活动代码的清单中添加以下代码...android:windowSoftInputMode="stateHidden|adjustPan|adjustResize"
祝你好运
#28 楼
解决此问题的方法有两种。转到AndroidManifist.xml,并在您的活动名称下添加此行
android:windowSoftInputMode="adjustPan"
如以下代码中所示,我已添加到注册活动。
<activity android:name=".Register"
android:windowSoftInputMode="adjustPan">
以第二种方式转到您的活动,然后在onCreate方法中添加此代码。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
评论
嗨,我在清单文件中使用了哪个标志时遇到了同样的问题,请您帮我解决这个问题这个问题在这里重复:stackoverflow.com/questions/5516216/…