从片段或活动 hide your other views (键盘启动时不需要), then restore them 来解决此问题:
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);
}
}
});
23 回答
这些答案对我没有帮助 . 所以我尝试了这个:
这就像一个魅力,现在我的应用程序的 Headers 不会消失 . 它更顺畅 .
您只需将活动的windowSoftInputMode标志切换到AndroidMainfest.xml文件中的"adjustPan",即可点亮您的活动标记 . 有关详细信息,请查看official documentation .
这些答案都没有对我有用,但这就是诀窍:
在我的情况下,按钮被推高的原因是因为它们上方的视图是
ScrollView
,并且无论我设置的是什么值,按钮都被推到了键盘上方 .通过在位于按钮上方的
ScrollView
上设置android:isScrollContainer="false"
,我能够避免我的底行按钮被软键盘向上推 .您可以尝试动态添加此属性,方法是将以下代码放在活动的
onCreate
方法中:这对我有用,而不是:
didnt .
对于未来的读者 .
我想要对这个问题进行具体控制,所以这就是我所做的:
从片段或活动 hide your other views (键盘启动时不需要), then restore them 来解决此问题:
对于xamarin用户,将此代码添加到MainActivity类的Activity属性中,
或者您可以将此代码
Window.SetSoftInputMode(Android.Views.SoftInput.AdjustNothing)
添加到MainActivity类的OnCreate方法 .要在片段中以编程方式执行此操作,您可以使用以下代码
把它放在onResume()中
到目前为止,答案并没有帮助我,因为我在textView下方有一个按钮和一个textInput字段(并排),它一直被键盘隐藏,但这解决了我的问题:
只需添加一行......
在
manifest file
的必需活动中添加android:windowSoftInputMode="stateHidden|adjustPan"
.我刚刚解决了:) :)
将以下代码添加到Manifest文件的“活动”中 .
这是对我有用的最好的
试试吧!
这段代码有效 .
活动的主窗口不会调整大小以便为软键盘腾出空间 . 相反,窗口的内容将自动平移,以便键盘不会遮挡当前焦点,用户可以随时看到他们正在键入的内容 .
这可能是您想要的更好的解决方案 .
对于滚动视图:
如果在Android Manifest中添加
android:windowSoftInputMode="stateHidden|adjustPan"
之后仍然无法正常工作 .它可能会受到影响,因为当键盘出现时,它将进入滚动视图,如果您的按钮/任何对象不在滚动视图中,则对象将跟随键盘并移动其位置 .
查看您的按钮所在的xml,并确保它位于滚动视图括号下,而不是它 .
希望这会有所帮助 . :d
好吧,我已经看过这些答案,但在我的情况下,我遇到了同样的问题,并通过一个非常方便和最简单的解决方案避难,涉及在您的xml文件中的Scrollview标记中放入一个非常小的无辜属性 . 那是
祝好运!
试着用这个:
此代码可能对您有所帮助 . 在
oncreate
方法中使用它 .包含在您要显示的活动下的清单文件中 . 但请确保不使用全屏活动
@manifest在你的活动中:
这个对我有用
在我的情况下,我需要键盘保持隐藏,只需点击按钮后我的布局需要调整,所以我只是在清单中添加了这个命令并且它非常正确 .
这个适合我 .