美文网首页
Android模拟点击弹出软键盘

Android模拟点击弹出软键盘

作者: 東方月初 | 来源:发表于2020-07-09 16:51 被阅读0次

    不过你是否记得,在你不像长大后那么在意这些所谓的优势和劣势的年幼时光,在没有面试官会不停要求你分析自己的强项与弱点的漫长过去,你其实是没有任何短板的。

    需求是进入一个页面自动弹出软键盘!

    项目背景

    使用ImmersionBar沉浸式状态栏,我尝试了ImmersionBar的解决方案,第一种键盘可以弹出但是不能自动弹出,第二种方案可行,但是又要自己修改XML又要自己沉浸式状态栏、我选择放弃。我不管我就要用着ImmersionBar自动弹出软键盘、哼很凶的!!!

    ImmersionBar解决EditText和软键盘的方案

    第一种方案

      ImmersionBar.with(this)
                .statusBarDarkFont(true)
                .keyboardEnable(true)//解决软键盘与底部输入框冲突问题
    //            .keyboardEnable(true,//软键盘自动弹出
    //                WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE or  WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
                .init()
    

    第二种方案 不使用keyboardEnable方法,只需要在布局的根节点(最外层节点)加上android:fitsSystemWindows="true"属性即可,只适合纯色状态栏

    自动弹出键盘的代码
    fun Activity.showKeyboard(view: EditText) {
        view.isFocusable = true
        view.isFocusableInTouchMode = true
        view.requestFocus()
        val manager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
        manager.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
    }
    

    解决方案

    既然正规的方式行不通,那我可要骚起来了~,进入页面后自己点一下(代码操作点一下)

    /**
     * 模拟点击显示软键盘
     * @param view
     * 建议在onResume方法中调用此方法
     * 延时200毫秒使界面绘制完毕,获取view的坐标进行点击。
     */
    fun simulateClick(view: View) {
        Handler().postDelayed({
            val location = IntArray(2)
            view.getLocationInWindow(location)
            val x = location[0].toFloat() // view距离window 左边的距离(即x轴方向)
            val y = location[1].toFloat() // view距离window 顶边的距离(即y轴方向)
            val downTime = SystemClock.uptimeMillis()
            val downEvent = MotionEvent.obtain(downTime, downTime, MotionEvent.ACTION_DOWN, x, y, 0)
            val upEvent = MotionEvent.obtain(downTime, downTime, MotionEvent.ACTION_UP, x, y, 0)
            view.onTouchEvent(downEvent)
            view.onTouchEvent(upEvent)
            downEvent.recycle()
            upEvent.recycle()
        },200)
    }
    

    最后有更好的解决请评论告诉我哦,我不想这么骚的!

    相关文章

      网友评论

          本文标题:Android模拟点击弹出软键盘

          本文链接:https://www.haomeiwen.com/subject/epyscktx.html