焦点在网页中的编辑框,点击遥控器的DPAD_CENTER键无法调出软键盘

前言:
最近碰到一个问题,焦点在网页中的编辑框,点击遥控器的DPAD_CENTER键无法调出软键盘。而在EditText里,点击DPAD_CENTER可以显示软键盘
解决方法有2个
1. 我手头有android2.2的版本,长按menu键可以强制调出软键盘,在android4.1上也实现此功能
2. 查看webview,看看如何调出软键盘,思路有2个
1). 查看鼠标点击时软键盘是如何调出的,然后在按键处理上也照抄点击事件
2). 看看能不能判断出是聚焦在文本输入框里面,如何是则手动调出软键盘

实施:

顺着webview看,首先看到的就是判断网页中组件的类型,先实现方法2中的方法2)了。
判断webview内容组件属于哪些内容。
public /*static*/ class HitTestResult {
        /**
         * Default HitTestResult, where the target is unknown
         */
        public static final int UNKNOWN_TYPE = 0;
        /**
         * @deprecated This type is no longer used.
         */
        @Deprecated
        public static final int ANCHOR_TYPE = 1;
        /**
         * HitTestResult for hitting a phone number
         */
        public static final int PHONE_TYPE = 2;
        /**
         * HitTestResult for hitting a map address
         */
        public static final int GEO_TYPE = 3;
        /**
         * HitTestResult for hitting an email address
         */
        public static final int EMAIL_TYPE = 4;
        /**
         * HitTestResult for hitting an HTML::img tag
         */
        public static final int IMAGE_TYPE = 5;
        /**
         * @deprecated This type is no longer used.
         */
        @Deprecated
        public static final int IMAGE_ANCHOR_TYPE = 6;
        /**
         * HitTestResult for hitting a HTML::a tag with src=http
         */
        public static final int SRC_ANCHOR_TYPE = 7;
        /**
         * HitTestResult for hitting a HTML::a tag with src=http + HTML::img
         */
        public static final int SRC_IMAGE_ANCHOR_TYPE = 8;
        /**
         * HitTestResult for hitting an edit text area
         */
        public static final int EDIT_TEXT_TYPE = 9;


        private int mType;
        private String mExtra;


        HitTestResult() {
            mType = UNKNOWN_TYPE;
        }


        private void setType(int type) {
            mType = type;
        }


        private void setExtra(String extra) {
            mExtra = extra;
        }


        public int getType() {
            return mType;
        }


        public String getExtra() {
            return mExtra;
        }
    }

    webview中有方法得到其实例
    
public HitTestResult getHitTestResult() {
        checkThread();
        return hitTestResult(mInitialHitTestResult);
    }

    在onKeyDown方法里监听需要的按键DPAD_CENTER,判断如果在EDIT_TEXT_TYPE状态,显示软键盘即可


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值