首页 文章

Android:如何防止软键盘向上推?

提问于
浏览
290

我的应用程序底部有一个垂直滑动抽屉 . 当软键盘打开时,它会向上推动抽屉的标签,使其位于键盘顶部 . 我实际上希望它保持在屏幕的底部,当键盘显示时隐藏 .

其他人遇到这个问题?知道如何解决它吗?

23 回答

  • 70

    这些答案对我没有帮助 . 所以我尝试了这个:

    android:windowSoftInputMode="adjustResize"
    

    这就像一个魅力,现在我的应用程序的 Headers 不会消失 . 它更顺畅 .

  • 1

    您只需将活动的windowSoftInputMode标志切换到AndroidMainfest.xml文件中的"adjustPan",即可点亮您的活动标记 . 有关详细信息,请查看official documentation .

    <activity
       ...
       android:windowSoftInputMode="adjustPan"> 
    </activity>
    
  • 7

    这些答案都没有对我有用,但这就是诀窍:

    android:windowSoftInputMode="adjustNothing"
    
  • 131

    在我的情况下,按钮被推高的原因是因为它们上方的视图是 ScrollView ,并且无论我设置的是什么值,按钮都被推到了键盘上方 .

    通过在位于按钮上方的 ScrollView 上设置 android:isScrollContainer="false" ,我能够避免我的底行按钮被软键盘向上推 .

  • 4

    您可以尝试动态添加此属性,方法是将以下代码放在活动的 onCreate 方法中:

    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
    

    这对我有用,而不是:

    android:windowSoftInputMode="adjustPan"
    

    didnt .

  • 6

    对于未来的读者 .

    我想要对这个问题进行具体控制,所以这就是我所做的:

    从片段或活动 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);
    
                        }
                    }
                });
    
  • 2

    对于xamarin用户,将此代码添加到MainActivity类的Activity属性中,

    WindowSoftInputMode =Android.Views.SoftInput.AdjustNothing
    

    或者您可以将此代码 Window.SetSoftInputMode(Android.Views.SoftInput.AdjustNothing) 添加到MainActivity类的OnCreate方法 .

  • 6

    要在片段中以编程方式执行此操作,您可以使用以下代码

    getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
    

    把它放在onResume()中

  • 7

    到目前为止,答案并没有帮助我,因为我在textView下方有一个按钮和一个textInput字段(并排),它一直被键盘隐藏,但这解决了我的问题:

    android:windowSoftInputMode="adjustResize"
    
  • 1

    只需添加一行......

    manifest file 的必需活动中添加 android:windowSoftInputMode="stateHidden|adjustPan" .

    我刚刚解决了:) :)

  • 31

    将以下代码添加到Manifest文件的“活动”中 .

    android:windowSoftInputMode="adjustResize"
    
  • 1

    这是对我有用的最好的

    android:windowSoftInputMode="adjustNothing"
    

    试试吧!

  • 55
    android:windowSoftInputMode="stateHidden|adjustNothing"
    

    这段代码有效 .

  • 5

    活动的主窗口不会调整大小以便为软键盘腾出空间 . 相反,窗口的内容将自动平移,以便键盘不会遮挡当前焦点,用户可以随时看到他们正在键入的内容 .

    android:windowSoftInputMode="adjustPan"
    

    这可能是您想要的更好的解决方案 .

  • 2

    对于滚动视图:

    如果在Android Manifest中添加 android:windowSoftInputMode="stateHidden|adjustPan" 之后仍然无法正常工作 .

    它可能会受到影响,因为当键盘出现时,它将进入滚动视图,如果您的按钮/任何对象不在滚动视图中,则对象将跟随键盘并移动其位置 .

    查看您的按钮所在的xml,并确保它位于滚动视图括号下,而不是它 .

    希望这会有所帮助 . :d

  • 0

    好吧,我已经看过这些答案,但在我的情况下,我遇到了同样的问题,并通过一个非常方便和最简单的解决方案避难,涉及在您的xml文件中的Scrollview标记中放入一个非常小的无辜属性 . 那是

    android:isScrollContainer="false"
    

    祝好运!

  • 1

    试着用这个:

    android:windowSoftInputMode="stateHidden|adjustPan"
    
  • 7

    此代码可能对您有所帮助 . 在 oncreate 方法中使用它 .

    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
    
  • 4

    包含在您要显示的活动下的清单文件中 . 但请确保不使用全屏活动

    android:windowSoftInputMode="adjustPan"
    
  • 2

    @manifest在你的活动中:

    android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
    
  • 0

    这个对我有用

    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
    
  • 1

    在我的情况下,我需要键盘保持隐藏,只需点击按钮后我的布局需要调整,所以我只是在清单中添加了这个命令并且它非常正确 .

    android:windowSoftInputMode="stateHidden|adjustResize"
    
  • 502
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
    

    这个适合我 .

相关问题