精华内容
下载资源
问答
  • Unity3d C# 实现UGUI软键盘输入,实现中文、英文输入都支持。 建议先看说明:https://blog.csdn.net/qq_33789001/article/details/119329690
  • Android自定义输入法软键盘,博客地址: https://blog.csdn.net/DeMonliuhui/article/details/84589936
  • 将文件添加到工程中,在需要弹出输入法的控件上添加信号槽即可,例:connect(inputmethod,SIGNAL(sendPinyin(QString)),this,SLOT(confirmString(QString)))。支持中英文切换,大小写。
  • 手机上输入文字,都是通过系统自带的软键盘,这个软键盘可以是Android自带的,也可以是第三方软键盘如搜狗输入法。多数情况下面,系统自带的软键盘已经够用了,可是总有少数情况,系统软键盘无法满足开发者的要求,...
    手机上输入文字,都是通过系统自带的软键盘,这个软键盘可以是Android自带的,也可以是第三方软键盘如搜狗输入法。多数情况下面,系统自带的软键盘已经够用了,可是总有少数情况,系统软键盘无法满足开发者的要求,比如以下几个需求,系统软键盘就无法处理:
    
    1、像手机号码与支付密码,只需要输入数字,连标点符号都不需要。然而系统软键盘即使切换到123数字模式,依旧显示包括标点符号在内的冗余按键。
    2、系统软键盘固定在屏幕下方弹出,无法做为控件嵌入到页面布局中,更无法指定软键盘的显示位置。
    3、系统软键盘会自动响应EditText的焦点变更事件,常常在意料之外突然之间蹦出来,弄得开发者要么剥夺EditText的焦点,要么强行关闭软键盘显示,但无论哪种方式都得开发者强行**,很不方便。
    基于以上情况,要想满足这些定制需求,只能对输入法自定义软键盘了。全数字的软键盘界面倒也简单,下面先来个数字键盘的效果图。


    这个键盘只有0-9十个数字,再加一个退格键,可谓十个兄弟家徒四壁,真是再直白不过了。那么这个软键盘又是如何实现的呢?其实它跟平常的自定义控件基本类似,只在细节上有所差异,下面分步说明自定义软键盘的过程。
    1、我们知道,自定义控件要么重写onDraw方法来绘制控件界面,要么从layout布局文件中加载控件界面。软键盘采取的是后一种方式,只不过它的布局文件不是放在res/layout目录,而是保存在res/xml目录。
    2、自定义控件的主要工作是书写自定义的控件类,自定义软键盘也不例外,有了自定义的控件类,才能处理十个数字键的按键动作,才能把软键盘做为普通的控件嵌入到其它布局文件中。
    3、软键盘不是一个孤立的控件,它的按键动作需要实时在某个编辑框中把数字显示出来,所以在使用时还得给它绑定一个EditText,这样软键盘才知道我的按键要输出给这个EditText,而不是输出给那个EditText。

    俗话说,百闻不如一见,所以在说明具体的实现步骤之前,还是先看看最终的软键盘使用动图,带上这个感性认识去学习会更有帮助。


    接下来阐述自定义软键盘的三个步骤,首先要定义软键盘的布局文件,在res/xml目录创建名为inputkeyboard.xml的文件,内部的根节点为Keyboard,其下挂了四个Row节点表示有四行,每个Row节点下又挂了三个Key节点,表示每行有三个按键。完整的键盘布局文件如下所示:
    <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
    	android:keyWidth="34%p" android:horizontalGap="1px"
    	android:verticalGap="1px" android:keyHeight="55dp">
    	<Row>
    		<Key android:codes="49" android:keyLabel="1"/>
    		<Key android:codes="50" android:keyLabel="2" />
    		<Key android:codes="51" android:keyLabel="3"/>
    	</Row>
    	<Row>
    		<Key android:codes="52" android:keyLabel="4" />
    		<Key android:codes="53" android:keyLabel="5" />
    		<Key android:codes="54" android:keyLabel="6" />
    	</Row>
    	<Row>
    		<Key android:codes="55" android:keyLabel="7" />
    		<Key android:codes="56" android:keyLabel="8" />
    		<Key android:codes="57" android:keyLabel="9" />
    	</Row>
    	<Row>
    		<Key android:codes="-3"
    			android:keyEdgeFlags="left"
    			android:keyIcon="@drawable/sym_keyboard_done" />
    		<Key android:codes="48" android:keyLabel="0" />
    		<Key android:codes="-5"
    			android:isRepeatable="true"
    			android:keyEdgeFlags="right"
    			android:keyIcon="@drawable/sym_keyboard_delete" />
    		</Row>
    </Keyboard>
    上面这个xml键盘布局,到时候将作为自定义属性传给软键盘控件,所以要在res/values/attrs.xml中补充下列属性配置:
        <declare-styleable name="keyboard">
            <attr name="xml" format="reference" />
        </declare-styleable>

    然后是编写自定义软键盘的控件代码了,这里的关键是用自定义的键盘布局替换掉系统默认的键盘布局,自定义代码如下所示:
    public class KeyboardLayout extends LinearLayout {
    	private KeyboardView mKeyboardView;
    	private Keyboard mKeyboard;
    
    	public KeyboardLayout(Context context, AttributeSet attrs, int defStyle) {
    		super(context, attrs, defStyle);
    		initKeyboard(context, attrs);
    	}
    	
    	private void initKeyboard(Context context, AttributeSet attrs){
    		TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.keyboard);
    		if (a.hasValue(R.styleable.keyboard_xml)) {
    			//从xml文件中获取键盘布局
    			int xmlid = a.getResourceId(R.styleable.keyboard_xml,0);
    			mKeyboard = new Keyboard(context, xmlid);
    			mKeyboardView = (KeyboardView)LayoutInflater.from(context).inflate(R.layout.keyboardview, null);
    			//为键盘视图设置自定义的键盘布局
    			mKeyboardView.setKeyboard(mKeyboard);
    			mKeyboardView.setEnabled(true);  
    			mKeyboardView.setPreviewEnabled(false);  
    			addView(mKeyboardView);
    		}
    	}
    }

    最后要给软键盘绑定对应的EditText对象,即当软键盘发生按键动作时,要把按键结果显示在哪个EditText上。这个操作就是调用KeyboardView的setOnKeyboardActionListener方法,设置一个键盘事件监听器,监听器内部主要实现了onKey方法,每当发现合法的按键事件(0-9与退格键),则同步修改EditText对象的文本。这部分代码补充到前面的自定义控件类KeyboardLayout之中:
    	public void setInputWidget(EditText et) {
    		mKeyboardView.setOnKeyboardActionListener(new KeyboardListener(et));
    	}
    
    	private class KeyboardListener implements OnKeyboardActionListener {
    		private EditText et;
    		
    		public KeyboardListener(EditText et) {
    			this.et = et;
    		}
    		
    		@Override
    		public void onKey(int primaryCode, int[] keyCodes) {
    			Editable editable = et.getText();
    			int start = et.getSelectionStart();
    			if (primaryCode == Keyboard.KEYCODE_DELETE) { //退格键
    				if (editable != null && editable.length() > 0) {
    					if (start > 0) {
    						editable.delete(start - 1, start);
    					}
    				}
    			} else if(primaryCode>='0' && primaryCode<='9') {
    				//可以直接输入的字符(如0-9),它们在键盘映射xml中的keycode值必须配置为该字符的ASCII码
    				editable.insert(start, Character.toString((char) primaryCode));
    			}
    		}
    
    		//此处省略其它无需具体实现的Override函数
    	};

    至此我们可以像使用其它控件一样直接把软键盘加入到页面布局啦,注意指定键盘布局的自定义属性:
        <com.example.exmtextinput.widget.KeyboardLayout
            android:id="@+id/kl_input"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            mykeyboard:xml="@xml/inputkeyboard" />


    点此查看Android开发笔记的完整目录

    __________________________________________________________________________
    本文现已同步发布到微信公众号“老欧说安卓”,打开微信扫一扫下面的二维码,或者直接搜索公众号“老欧说安卓”添加关注,更快更方便地阅读技术干货。
    展开全文
  • 易语言软键盘 系统结构:子程序_软键盘,子程序_排序,子程序_初始化,外部接口_软键盘,外部接口_组件句柄,外部接口_获取文本, ======程序集1 | | | |------ _启动子程序 | | | |------ _临时子程序
  • qt编写的中文软键盘

    2019-05-05 15:41:07
    实现了一个qt输入法软键盘,能够进行中英文输入,可在x86平台运行
  • UnityUGUI模拟中文输入法,输入英文字母就可以联想中文输入
  • unity中文输入法

    2016-08-23 16:27:52
    unity实现的中文输入法
  • 很多时候,我们在使用应用时,会出现输入法软键盘弹出的问题,通常情况下,我们默认会使用户点击返回键或者下一步对软键盘进行隐藏。为了更好的体验,我们可以实现当用户使用完毕软键盘时。点击屏幕空白区域即可实现...

    很多时候,我们在使用应用时,会出现输入法软键盘弹出的问题,通常情况下,我们默认会使用户点击返回键或者下一步对软键盘进行隐藏。为了更好的体验,我们可以实现当用户使用完毕软键盘时。点击屏幕空白区域即可实现收起输入法软键盘功能。下面给大家介绍下实现方法。

    1、//隐藏软键盘

    在Java文件:

    InputMethodManager m = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);

    m .hideSoftInputFromWindow(xxxx.getWindowToken(), 0);//比如EditView

    或者是:

    在Manifest.xml的activity中写上:Android:windowSoftInputMode="stateHidden表示打开activity隐藏输入法。

    2、//显示软键盘,控件ID可以是EditText,TextView

    ((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).showSoftInput(控件ID, 0);

    3、不自动弹出键盘:

    最理想的实现方式:

    public class HomeActivity extends Activity {

    ......

    @Override

    public boolean dispatchTouchEvent(MotionEvent ev) {

    if (ev.getAction() == MotionEvent.ACTION_DOWN) {

    // 获得当前得到焦点的View,一般情况下就是EditText(特殊情况就是轨迹求或者实体案件会移动焦点)

    View v = getCurrentFocus();

    if (isShouldHideInput(v, ev)) {

    hideSoftInput(v.getWindowToken());

    }

    }

    return super.dispatchTouchEvent(ev);

    }

    /**

    * 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时没必要隐藏

    *

    * @param v

    * @param event

    * @return

    */

    private boolean isShouldHideInput(View v, MotionEvent event) {

    if (v != null && (v instanceof EditText)) {

    int[] l = { 0, 0 };

    v.getLocationInWindow(l);

    int left = l[0], top = l[1], bottom = top + v.getHeight(), right = left

    + v.getWidth();

    if (event.getX() > left && event.getX() < right

    && event.getY() > top && event.getY() < bottom) {

    // 点击EditText的事件,忽略它。

    return false;

    } else {

    return true;

    }

    }

    // 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditView上,和用户用轨迹球选择其他的焦点

    return false;

    }

    /**

    * 多种隐藏软件盘方法的其中一种

    *

    * @param token

    */

    private void hideSoftInput(IBinder token) {

    if (token != null) {

    InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

    im.hideSoftInputFromWindow(token,

    InputMethodManager.HIDE_NOT_ALWAYS);

    }

    }

    ......

    }

    以上所述是小编给大家介绍的Android 点击屏幕空白处收起输入法软键盘(手动打开),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    展开全文
  • Qt下的软键盘输入法

    热门讨论 2014-02-25 00:15:10
    该拼音输入法采用软键盘躲避光标策略,显示在屏幕上顶部或底部。 该输入法在Windows/Ubuntu下编译、调试通过。 该输入法使用源码下的py_mb.freq.db汉字库,使用时请将该字库拷贝至程序所在目录下。 该输入法的...
  • Qt5简易软件盘,支持中文输入、英文输入、数字输入,代码贴博客了: http://blog.csdn.net/wu9797/article/details/79018689
  • 中文输入比较麻烦,如何将拼音转换为汉字这个是最大的难点,自己开发还是算了,在网上逛了一段时间发现了hyjiacan.py4n(https://gitee.com/hyjiacan/Pinyin4Net) 这个好东西,是开源的库,其中

    前言

    上一章我们实现了“Unity3d C# UGUI制作内置键盘带输入功能(含工程源码)”,本篇文章主要在前者的基础上进行开发,如果没看过前者,建议先看一眼。仅支持英文的输入,实际意义不是很大。经过一段时间的研究,实现了中文输入的功能。

    效果

    输入效果:

    在这里插入图片描述

    中英切换:
    在这里插入图片描述

    实现

    中文输入比较麻烦,如何将拼音转换为汉字这个是最大的难点,自己开发还是算了,在网上逛了一段时间发现了hyjiacan.py4n(https://gitee.com/hyjiacan/Pinyin4Net) 这个好东西,是开源的库,其中就有拼音转文字的功能,就实现了中文的输入。键盘的样式和之前的一样,不过中文的输入,先通过输入的拼音输入转汉字,通过选择汉字完成输入,如果是数字和符号直接输入。
    所以在上一篇的基础上加了很多中英状态的判定和处理。

    键盘UI

    中英的键盘基本是一直的,这里的布局我们参照中文的手机输入法,在上面加了汉字备选项,同时还有当前的拼音显示:
    在这里插入图片描述

    拼音转汉字

    Pinyin4Net.GetHanzi("ai", false);
    

    在输入拼音变动时,通过GetHanzi接口获取备选汉字,同时更新。

    语言切换

            //语言点击事件
            private void ClickLanguage()
            {
                isCn = !isCn;
                if (isCn)
                {
                    LanText.text = "中/<color=#9A9A9A>En</color>";
                    CnObj.SetActive(true);
                    ClearCnPinYin();
                }
                else
                {
                    LanText.text = "En/<color=#9A9A9A>中</color>";
                    CnObj.SetActive(false);
                }
            }
    

    按键输入

            //输入内容追加
            public void AddComBtnString(string str)
            {
                if (!isCn)
                {
                    NewEditeString += str;
                    if (KeyboardPara != null)
                        KeyboardPara.OutputStr = NewEditeString;
                    call?.Invoke(KeyboardPara);
                    if (isShift && !isShiftLock)
                    {
                        isShift = false;
                        ShiftBG.color = new Color(128, 128, 128, 255);
                        OnShiftOff();
                    }
                }
                else {
                    Regex reg = new Regex(@"[a-zA-Z]+");
                    if (reg.IsMatch(str))
                    { //纯字母
                        PinYinStr += str;
                        PinYinText.text = PinYinStr;
                        HanZiArr = Pinyin4Net.GetHanzi("ai", false);
                        UpdateHanZi();
                    }
                    else {
                        NewEditeString += (HanZiArr.Length > 0 && HanZiArr[0] != null) ? (HanZiArr[0] + str) : str;
                        if (KeyboardPara != null)
                            KeyboardPara.OutputStr = NewEditeString;
                        call?.Invoke(KeyboardPara);
                    }
                }
            }
    

    这里中文状态下的输入非a-z 和A-Z,将会直接输入,不然将作为拼音,获取更新汉字备选项。

    选定汉字

            //点击汉字
            public void ClickHanZi(Text hz) {
                NewEditeString += hz.text;
                if (KeyboardPara != null)
                    KeyboardPara.OutputStr = NewEditeString;
                call?.Invoke(KeyboardPara);
                ClearCnPinYin();
            }
    

    Text对象的点击函数,直接追加Text的值为输入内容。

    汉字换页

            //点击上一页
            public void ClickLast()
            {
                if (NowPage > 0)
                    UpdateHanZi(--NowPage);
            }
    
            //点击下一页
            public void ClickNext() {
                if (NowPage < TotalPage)
                    UpdateHanZi(++NowPage);
            }
    

    根据页面编号刷新汉字备选项。

    项目源码

    https://download.csdn.net/download/qq_33789001/20658095

    总结

    目前使用的感觉肯定没有商用的输入法好用,因为仅支持单字打字,没有个人的偏好、兴趣的设置,也没有使用频率等信息,所以打起来体验相差较大。但是输入的功能已经完成,字库也算比较全的,基本功能算是够用。如果接入拼音转文字的接口可能效果会很好,但是离线状态下没法使用。

    展开全文
  • android 输入法软键盘屏蔽掉中文切换

    千次阅读 2016-11-08 16:32:24
    android4.4.2屏蔽掉输入法中文情节, 直接上路子: diff --git a/packages/inputmethods/PinyinIME/res/xml/skb_sym2.xml b/packages/inputmethods/Pinyi nIME/res/xml/skb_sym2.xml index a55f91e..e0bdefd ...

    android4.4.2屏蔽掉输入法的中文情节,

    直接上路子:

    diff --git a/packages/inputmethods/PinyinIME/res/xml/skb_sym2.xml b/packages/inputmethods/Pinyi
    nIME/res/xml/skb_sym2.xml
    index a55f91e..e0bdefd 100644
    --- a/packages/inputmethods/PinyinIME/res/xml/skb_sym2.xml
    +++ b/packages/inputmethods/PinyinIME/res/xml/skb_sym2.xml
    @@ -55,7 +55,8 @@

    <row width="14.696%p" key_type="1">
    <key code="-2" label="中 符" width="20%p" repeat="true">
    - <toggle_state state_id="@string/toggle_en_sym2" label="英 符" code="-2"/>
    + <!--toggle_state state_id="@string/toggle_en_sym2" label="英 符" code="-2"-->
    + <toggle_state state_id="@string/toggle_en_sym2" label="En" code="-2"/>
    </key>
    <key code="-3" key_type="3" label="\?123"/>
    <key code="62" key_type="5" width="30.608%p"/>
    diff --git a/packages/inputmethods/PinyinIME/src/com/android/inputmethod/pinyin/SoftKeyboard.ja
    va b/packages/inputmethods/PinyinIME/src/com/android/inputmethod/pinyin/SoftKeyboard.java
    index b8cc504..21c2fa0 100644
    --- a/packages/inputmethods/PinyinIME/src/com/android/inputmethod/pinyin/SoftKeyboard.java
    +++ b/packages/inputmethods/PinyinIME/src/com/android/inputmethod/pinyin/SoftKeyboard.java
    @@ -86,6 +86,10 @@ public class SoftKeyboard {
    */
    private List<KeyRow> mKeyRows;

    + //vinci add for ignore switching btn
    + private int switchRow = 2;
    + private int switchNum = 0;
    +

    /**
    * Background of the soft keyboard. If it is null, the one in the soft
    * keyboard template will be used.
    @@ -316,7 +320,10 @@ public class SoftKeyboard {
    SoftKey sKey = softKeys.get(i);
    if (sKey.mLeft <= x && sKey.mTop <= y && sKey.mRight > x
    && sKey.mBottom > y) {
    - return sKey;
    + if (switchRow < row && switchNum == i)
    + return null;
    + else
    + return sKey;

    }
    }
    }
    @@ -341,6 +348,8 @@ public class SoftKeyboard {
    if (dis < nearestDis) {
    nearestDis = dis;
    nearestKey = sKey;
    + if (switchRow < row && switchNum == i)
    + return null;

    }
    }
    }


    --- a/packages/inputmethods/PinyinIME/src/com/android/inputmethod/pinyin/InputModeSwitcher.java
    +++ b/packages/inputmethods/PinyinIME/src/com/android/inputmethod/pinyin/InputModeSwitcher.java
    @@ -139,17 +139,17 @@ public class InputModeSwitcher {
    /**
    * Mode for inputing Chinese with soft keyboard.
    */
    - public static final int MODE_SKB_CHINESE = (MASK_SKB_LAYOUT_QWERTY | MASK_LANGUAGE_CN);
    + public static final int MODE_SKB_CHINESE = (MASK_SKB_LAYOUT_QWERTY | MASK_LANGUAGE_EN);

    /**
    * Mode for inputing basic symbols for Chinese mode with soft keyboard.
    */
    - public static final int MODE_SKB_SYMBOL1_CN = (MASK_SKB_LAYOUT_SYMBOL1 | MASK_LANGUAGE_CN)
    ;
    + public static final int MODE_SKB_SYMBOL1_CN = (MASK_SKB_LAYOUT_SYMBOL1 | MASK_LANGUAGE_EN)
    ;

    /**
    * Mode for inputing more symbols for Chinese mode with soft keyboard.
    */
    - public static final int MODE_SKB_SYMBOL2_CN = (MASK_SKB_LAYOUT_SYMBOL2 | MASK_LANGUAGE_CN);
    + public static final int MODE_SKB_SYMBOL2_CN = (MASK_SKB_LAYOUT_SYMBOL2 | MASK_LANGUAGE_EN);

    /**

    * Mode for inputing English lower characters with soft keyboard.
    @@ -191,7 +191,7 @@ public class InputModeSwitcher {
    /**
    * Mode for inputing Chinese with a hardware keyboard.
    */
    - public static final int MODE_HKB_CHINESE = (MASK_LANGUAGE_CN);
    + public static final int MODE_HKB_CHINESE = (MASK_LANGUAGE_EN);

    /**
    * Mode for inputing English with a hardware keyboard


    具体实现原理就是屏蔽掉左下角切换button,不再赘述。








    展开全文
  • 可以进行输入法切换的JS软键盘,不需要安装任何插件,直接调用就行。
  • Qt5软键盘实现中文拼音输入法

    万次阅读 多人点赞 2017-10-31 20:59:38
    基于Qt实现的虚拟键盘实现输入法在网上所有资料看来,几乎都是基于生成的中文汉字数据库实现的方法,不够灵活,不够智能。 拼音输入法的库我们采用的安卓底层的谷歌拼音输入法,在Qt5.7之后,Qt官方也出了一款输入法...
  • js软键盘(含输入法)

    热门讨论 2008-02-29 15:24:36
    JAVASCRIPT做的软键盘,并含有多种语言,及中文输入法
  • C# 实现的虚拟软键盘支持中英文输入,启动的时候将电脑语言默认设置为英文的状态,不要是中文状态,这是在一个form中实现的软键盘功能,大家也是可以抽取出来作为一个单独的form页面,或者将软键盘封装为单独的控件...
  • VB.NET 调用软键盘

    2018-08-01 12:55:39
    用于带触摸功能的工控机软件开发,在一个窗体里面点击文本框控件时,弹出类似与WINDOWS10 里面的软键盘,采用VS2010.NET 编程。
  • html js 虚拟键盘带拼音输入法,豪华界面,Kiosk专用。
  • 获取软键盘输入法

    2013-04-10 14:52:47
    获取软键盘输入法,两种,有一种不支持中文
  • edittext 输入法软键盘

    2014-01-16 16:21:04
    //如果打开了软键盘,则隐藏它和评论 if(imm.isActive(et_content)) { Log.i("onKeyDown", "22222"); imm.hideSoftInputFromWindow(et_content.getWindowToken(), 0) ; // ------------------- ...
  • QT模拟键盘输入法(中文)
  • Delphi软键盘(支持中文输入)

    热门讨论 2010-08-22 21:48:21
    Delphi写的软键盘,可用于触摸屏软件,支持中文输入
  • 正常输入时 此时鼠标点击其他位置会,填入字符,且发生报错 报错信息
  • 基于Qt5,手写模块使用微软Tablet PC SDK,支持中文拼音输入、英文输入、数字输入、常用符号输入、手写输入、实体键盘同步
  • QT5 虚拟键盘软键盘

    2019-11-12 13:47:04
    QT5虚拟键盘,可根据项目需求优化改进,自定义键盘格式,软键盘弹出,适合linux嵌入式项目,可配合中文数据库实现中文输入法
  • Qt软键盘中/英文输入法

    千次阅读 2019-10-24 12:31:36
    Qt软键盘,实现中文/英文输入法功能。 Qt5.7版本之后,Qt官网也推出了一款支持中文输入的软键盘。 此软键盘来源于笑颜,得到同意才发此文章。一是进行记录,二是后期会在此版本上增加功能,并对出现的bug进行修复...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,175
精华内容 2,070
关键字:

中文输入法软键盘