我的应用程序底部有一个垂直滑动抽屉。当软键盘打开时,它会向上推动抽屉的卡舌,因此它位于键盘上方。我实际上希望它保留在屏幕底部,当显示键盘时隐藏起来。
还有其他人遇到这个问题吗?知道如何解决?
我的应用程序底部有一个垂直滑动抽屉。当软键盘打开时,它会向上推动抽屉的卡舌,因此它位于键盘上方。我实际上希望它保留在屏幕底部,当显示键盘时隐藏起来。
还有其他人遇到这个问题吗?知道如何解决?
Answers:
您只需将活动的切换windowSoftInputMode
标志adjustPan
在AndroidMainfest.xml
您的活动标签内的文件。
查看官方文档以获取更多信息。
<activity
...
android:windowSoftInputMode="adjustPan">
</activity>
没有答案对我有用,但这确实成功了:
android:windowSoftInputMode="adjustNothing"
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
以编程方式设置此值
在我的情况下,按下按钮的原因是因为它们上方的视图是ScrollView
,并且无论android:windowSoftInputMode
我设置的值是多少,按钮向上推时它都会折叠起来。
我能避免我的按钮的底行得到通过设置由软键盘推android:isScrollContainer="false"
的ScrollView
,上面的按钮旁边。
您可以尝试通过在onCreate
活动方法中放置以下代码来动态添加此属性:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
这对我有用,但是:
android:windowSoftInputMode="adjustPan"
没有。
android:windowSoftInputMode="adjustPan"
在AndroidManifest.xml中添加了?
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
在片段中使用“ ”?
FragmentActivity
),并附加了一些视图(视图从扩展RelativeLayout
)。因此,在麻烦的观点中,我确实controller.getWindow()...
如您所说。作品
对于未来的读者。
我希望对此问题进行特定控制,所以我做了以下操作:
在片段或活动中,隐藏其他视图(键盘弹起时不需要),然后还原它们以解决此问题:
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);
}
}
});
view.post(Runnable runnable)
从那里使用并设置了可见性。事实证明对我来说很棒
这个为我工作
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
将以下代码添加到清单文件的“活动”中。
android:windowSoftInputMode="adjustResize"
android:windowSoftInputMode="stateHidden|adjustNothing"
此代码有效。
这是最适合我的
android:windowSoftInputMode="adjustNothing"
尝试一下!
好吧,我已经看过这些答案了,但就我而言,我遇到了同样的问题,并通过一个非常方便,最简单的解决方案避难了,该解决方案涉及将一个很小的无辜属性放入xml文件中的Scrollview标记中。那是
android:isScrollContainer="false"
祝好运!
在我的情况下,我需要使键盘保持隐藏状态,并且在单击按钮后就需要调整布局,因此我只在清单中添加了此命令,它就变得非常正确。
android:windowSoftInputMode="stateHidden|adjustResize"
他们都没有为我工作,试试这个
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) {
}
}
});
}
尝试使用此:
android:windowSoftInputMode="stateHidden|adjustPan"
此代码可以为您提供帮助。在您的oncreate
方法中使用它。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);