1.判断不可见区域大高度

private fun isSoftShowing() :Boolean{    //获取当前屏幕内容的高度    val screenHeight = getWindow().getDecorView().getHeight()    //获取View可见区域的bottom    val rect = Rect();    //DecorView即为activity的顶级view    getWindow().getDecorView().getWindowVisibleDisplayFrame(rect)    //考虑到虚拟导航栏的情况(虚拟导航栏情况下:screenHeight = rect.bottom + 虚拟导航栏高度)    //选取screenHeight*2/3进行判断    return screenHeight*2/3 > rect.bottom}

2.根据参数v来获取

private fun isSHowKeyboard(context: Context, v: View):Boolean  {    var imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager    if (imm.hideSoftInputFromWindow(v.getWindowToken(), 0)) {        imm.showSoftInput(v, 0)        return true    } else {        return false    }}

3.重写View的onSizeChanged方法

public class ResizeLayout extends RelativeLayout {    // 定义默认的软键盘最小高度,这是为了避免onSizeChanged在某些下特殊情况下出现的问题    private final int SOFTKEYPAD_MIN_HEIGHT = 2 * 48;    private OnInputSoftListener onInputSoftListener;    public ResizeLayout(Context context) {        super(context);    }    public ResizeLayout(Context context, AttributeSet attrs) {        super(context, attrs);    }    public void setInputSoftListener(OnInputSoftListener listener) {        onInputSoftListener = listener;    }    @Override    protected void onSizeChanged(int w, final int h, int oldw, final int oldh) {        super.onSizeChanged(w, h, oldw, oldh);        if (onInputSoftListener == null || oldw == 0 || oldh == 0) {            return;        }        post(() -> {            if (oldh - h > SOFTKEYPAD_MIN_HEIGHT) {                onInputSoftListener.onSoftInputShow();            } else if (h - oldh > SOFTKEYPAD_MIN_HEIGHT) {                onInputSoftListener.onSoftInputHide();            }        });    }    /**     * 软键盘弹出时回调函数     */    public interface OnInputSoftListener {        // 软键盘显示的回调方法        void onSoftInputShow();        // 软键盘隐藏时的回调方法        void onSoftInputHide();    }}

更多相关文章

  1. Android(安卓)Processdialog 用法
  2. cocos2dx 在android手机输入特殊字符导致程序崩溃
  3. 确认数据android 弹出提示框
  4. Android各个版本API的差异
  5. android 中的activity管理
  6. Android查询不到电话号码解决方法
  7. Android(安卓)API之android.widget.Filterable
  8. Android(安卓)WebView学习
  9. Android监控程序本身被卸载方法汇总

随机推荐

  1. Android文件浏览器的开发
  2. Android自学笔记:应用程序组件
  3. Android上调用google map api v2
  4. android adb 通过adb连接制定设备
  5. android之app widget(一)
  6. android aidl
  7. Android(安卓)Studio:Fetching android s
  8. 【转】Launcher研究之AndroidManifest.xm
  9. Android初始化语言 (init.*.rc、init.con
  10. Android中关于ComponentName的使用