自定义小键盘

      最近项目改进 ---- 屏蔽Android系统自带输入键盘,添加自定义键盘,首先声明是Android系统车载上面,,开发虽然是基于Android系统,但是底层是改过的,并不是全依靠原生,我们是有一个Jar包 的

     现象:  之前使用系统输入法,10%概率出现,点击Edittext,系统不能及时弹出键盘,    退出Activity ,重新进入才能正常输入,用户体验差

     自定义键盘一般逻辑

第一步

要屏蔽掉系统输入法

代码:

 // deviceName_et.setInputType(InputType.TYPE_NULL);

第二步:

 new KeyboardUtil(act, ctx, deviceName_et).showKeyboard();  //自定义键盘show 出来


自定义键盘View没多大的套路,请自己找资源

然后点击时自定义键盘跳出来了,仔细一看,edittext焦点获取到了, 但是没光标啊 (附图) , 键盘可以正常出现/消失键盘 , but ,键盘消失了, 焦点没有消失啊,这些现象都可以通过打Log和通过设置edittext中  text的颜色变化

好,OK,找资料

可以通过反射把光标显示出来

反射代码:

private void setMyInputType() {

        if (android.os.Build.VERSION.SDK_INT <= 10) {
            deviceName_et.setInputType(InputType.TYPE_NULL);
        } else {
            getWindow().setSoftInputMode(
                    WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
            try {
                Class<EditText> cls = EditText.class;
                Method method = cls.getMethod(
                        "setShowSoftInputOnFocus", boolean.class);
                method.setAccessible(false);
                method.invoke(deviceName_et, false);

            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();

              /*  try {
                    Class<EditText> cls = EditText.class;
                    Method setShowSoftInputOnFocus;
                    setShowSoftInputOnFocus = cls.getMethod(
                            "setShowSoftInputOnFocus", boolean.class);
                    setShowSoftInputOnFocus.setAccessible(true);
                    setShowSoftInputOnFocus.invoke(deviceName_et, false);
                } catch (Exception e) {
                    e.printStackTrace();
                }*/
            }
        }
        Log.d(TAG, "setMyInputType: 走完");
    }

}

发现:

光标还是没有

好尴尬   !!!!!!   别人博客就是这么做的啊!!

咋整


OK  其实第一步问题出在第一步

不用,注释掉

然后走反射

可以了,焦点和自定义键盘能同步出现/消失

如果你也遇到了这种情况,试着用这种步骤,应该可以解决









    



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF(Windows Presentation Foundation)是微软推出的一种用于创建Windows应用程序的框架。在WPF中,我们可以通过自定义输入键盘来实现用户输入的个性化。 首先,我们需要创建一个新的WPF用户控件,该控件将用于自定义输入键盘的显示和交互。在该控件中,我们可以添加按钮、文本框和其他UI元素来构建我们想要的键盘布局。 接着,我们可以为每个按钮绑定相应的命令或事件处理程序。例如,我们可以为数字按钮添加点击事件,使其在文本框中显示相应的数字字符。 同时,我们还可以借助WPF中的命令绑定机制,为键盘按钮添加更复杂的功能。例如,我们可以使用命令绑定将Shift按钮与大写字母绑定,使用户可以通过点击Shift按钮来切换字母的大小写。 此外,我们还可以使用WPF的样式和模板功能来美化自定义输入键盘的外观。通过为按钮和键盘控件定义相应的样式和模板,我们可以实现各种特效和动画效果,提升用户体验。 最后,我们需要在应用程序中将自定义输入键盘添加到相应的界面或窗口中。可以通过在XAML中引用我们创建的自定义输入键盘控件,或者在代码中动态地将其添加到用户界面中。 总之,通过WPF的强大功能,我们可以灵活地定制和实现自定义输入键盘,以满足不同应用场景和用户需求。这使得用户在使用WPF应用程序时可以得到更方便、个性化的输入体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值