[Android记录] EditText--输入法

1. 默认显示输入法的数字键盘,但是同时允许输入文本.

初始化的时候调用setRawInputType来设置输入法类型
EditText editText = (EditText) findViewById(R.id.x_edit_id);
edit.setRawInputType(EditorInfo.TYPE_CLASS_NUMBER);

2. 上接(1), 动态修改默认的输入法类型

修改方式参考(1),但是动态修改的之后需要重启一下InputMethodManager
示例:
final EditText editText = (EditText) findViewById(R.id.x_edit_1);

findViewById(R.id.x_show_number).setOnClickListener(new OnClickListener() {
	
	@Override
	public void onClick(View v) {
		editText.setRawInputType(EditorInfo.TYPE_CLASS_NUMBER);
		InputMethodManager inputMethodManager=(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        if (inputMethodManager != null){
        	inputMethodManager.restartInput(editText);
        }
	}
});

findViewById(R.id.x_show_text).setOnClickListener(new OnClickListener() {
	
	@Override
	public void onClick(View v) {
		editText.setRawInputType(EditorInfo.TYPE_CLASS_TEXT);
		InputMethodManager inputMethodManager=(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        if (inputMethodManager != null){
        	inputMethodManager.restartInput(editText);
        }
	}
});

3.setRawInputType与setInputType的区别

setRawInputType只是修改输入法类型,不做其他的改动.  setInputType除了修改输入法类型外,还会修改KeyListener.

换句话说,就是setRawInputType修改输入法的类型,setInputType修改输入框的类型.

输入法面板的显示由输入法类型类型控制,内容的过滤由KeyListener控制.所以设置下面的调用是不同的: 

edit.setRawInputType(EditorInfo.TYPE_CLASS_NUMBER)

只是设置输入法类型为数字类型,于是输入法面板会弹出数字面板.

setInputType(EditorInfo.TYPE_CLASS_NUMBER)

除了设置输入法类型为数字类型,同时会将非数字的输入全部过滤掉,因此只能输入纯数字.

4.设置输入法面板类型

EditText editText = (EditText) findViewById(R.id.x_edit_id);
editText.setRawInputType(Configuration.KEYBOARD_12KEY);
但是各输入法实现不是很标准,所以使用也不是非常可靠.
KEYBOARD_12KEY:设备有一个12键的物理键盘,就是以前功能机的那种数字键盘.
KEYBOARD_NOKEYS):设备有一个没有物理键盘.
KEYBOARD_QWERTY):设备有一个QWERTY键的物理键盘,比如Moto里程碑系列.
KEYBOARD_UNDEFINED):未定义

转载于:https://my.oschina.net/xesam/blog/150178

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值