软键盘隐藏了EditText的一半

我有一个listview,最后一个列表项包含EditText:

     

EditText的一半被隐藏。 我也无法滚动listview。 有解决方案吗

图片

  • 获取Android中虚拟键盘的高度
  • AlertDialog中的NumberPicker总是激活键盘。 如何禁用这个?
  • 对话框closures时隐藏软input键盘
  • 隐藏更衣室应用软键盘
  • 在Emulator(GenyMotion)Android 4.3中显示EditText的键盘
  • Honeycomb(3.1)adjustResize不再工作?
  • Android - 软键盘将我的活动布局推出屏幕
  • Android软键盘在全屏幕时隐藏CordovaWebView的input
  • 解决方法是在Manifest中设置一个android:softInputMode属性到adjustResize ,并将布局(不是列表项布局)放在ScrollView中。

    我有一个类似的问题,然后我使用android:windowSoftInputMode="adjustResize|stateHidden"如这里提到的..它对我来说非常好..

    从我作为Android开发人员的早期开始,我一直在努力使用虚拟键盘。 我很惊讶Android仍然没有为此提供优雅而明确的解决方案。

    所以这里的解决方法将把这个烂摊子放在身后。 它将在没有ScrollView变通方法或赠送全屏标志的情况下工作。

    1. 将这个真棒库添加到您的gradle文件中:

    compile’net.yslibrary.keyboardvisibilityevent:keyboardvisibilityevent:1.0.1′

    1. 确保您的活动具有以下键盘设置:

    机器人:windowSoftInputMode = “adjustResize”

    1. 使用垂直LinearLayout包装EditText并添加具有Gone可见性的视图:

          
    2. 计算屏幕大小,以便计算推送EditText的视图的高度:

       private void storeScreenHeightForKeyboardHeightCalculations() { Rect r = new Rect(); View rootview = getActivity().getWindow().getDecorView(); rootview.getWindowVisibleDisplayFrame(r); mOriginalScreenHeight = r.height(); Rect rectangle = new Rect(); Window window = getActivity().getWindow(); window.getDecorView().getWindowVisibleDisplayFrame(rectangle); int statusBarHeight = rectangle.top; int contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT).getTop(); int titleBarHeight= contentViewTop - statusBarHeight; if (titleBarHeight == 0) { mOriginalScreenHeight -= (24 * Utils.getDensity(getContext())); } } 
      1. 为键盘打开和关闭事件添加一个监听器,然后在运行时设置EditText下面的View的高度,这样我们就可以在任何设备和自定义键盘上正确设置高度。 然后只需在键盘打开时使其可见:
     private void addkeyBoardlistener() { KeyboardVisibilityEvent.setEventListener( getActivity(), new KeyboardVisibilityEventListener() { @Override public void onVisibilityChanged(boolean isOpen) { if (isOpen) { Rect r = new Rect(); View rootview = getActivity().getWindow().getDecorView(); // this = activity rootview.getWindowVisibleDisplayFrame(r); int keyboardHeight = (mOriginalScreenHeight - r.height()); LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) keyboard_view.getLayoutParams(); params.height = (int) ((keyboardHeight + 5 * Utils.getDensity(getContext()))); keyboard_view.setLayoutParams(params); keyboard_view.setVisibility(View.VISIBLE); } else { keyboard_view.setVisibility(View.GONE); } } }); } 

    这是结果:

    结果:

    在窗口启动时禁用键盘

     this .getWindow().setSoftInputMode(WindowManager.LayoutParams. SOFT_INPUT_STATE_ALWAYS_HIDDEN ); 

    在Manifest中为您的Activity元素设置android:softInputMode属性。

    有关有效值及其效果的完整列表,请参阅Manifest文档 。 您特别感兴趣的可能是adjustPanadjustResize