一、android 软件盘事件响应 在android中,有时需要对EditText实现软件盘监听的场景。当android按下软键盘的时候,响应完成、发送、搜索或者其他事件。 Google 提供了 EditorInfo、 KeyEvent 的一些方法,能够实现我们需要的功能。详细可研究:EditorInfo.class 和KeyEvent.class. 输入回车键隐藏输入键盘的方法:

如果布局中包含多个EditText,可以为每个EditText控件设置android:singleLine=”true”,弹出的软盘输入法中回车键为next,直到最后一个获取焦点后显示为Done。点击Done后,隐藏输入盘。将EditText的imeOptions属性设置android:imeOptions=”actionDone”,则不管是不是最后一个EditText,点击回车键即隐藏输入法。

监听Enter的事件,编写Enter的事件响应。设置文本框的OnKeyListener,当keyCode ==KeyEvent.KEYCODE_ENTER的时候,表明Enter键被按下,就可以编写自己事件响应功能了。

XML文件如下:

<EditText            android:id="@+id/editTextId"            android:layout_width="fill_parent"            android:layout_height="50dp"            android:imeOptions="actionDone"            android:hint="@string/task_new_one"            android:textSize="15sp"            android:singleLine="true"            android:paddingLeft="5dp"            android:layout_gravity="center"            android:background="@drawable/rectangle"            android:inputType="text"            ></EditText>

把EditText的Ime Options属性设置成不同的值,Enter键上可以显示不同的文字或图案。

actionNone : 回车键,按下后光标到下一行
actionGo : Go,
actionSearch : 一个放大镜
actionSend : Send
actionNext : Next
actionDone : Done,隐藏软键盘,即使不是最后一个文本输入框

通过修改android:imeOptions 来改变默认的键盘显示文本。常用的常量值如下:
  1. actionUnspecified 未指定,对应常量EditorInfo.IME_ACTION_UNSPECIFIED.
  2. actionNone 没有动作,对应常量EditorInfo.IME_ACTION_NONE.
  3. actionGo 去往,对应常量EditorInfo.IME_ACTION_GO.
  4. actionSearch 搜索,对应常量EditorInfo.IME_ACTION_SEARCH.
  5. actionSend 发送,对应常量EditorInfo.IME_ACTION_SEND.
  6. actionNext 下一个,对应常量EditorInfo.IME_ACTION_NEXT.
  7. actionDone 完成,对应常量EditorInfo.IME_ACTION_DONE.
JAVA代码:
EditText inputText = (EditText) findViewById(R.id. editTextId);   inputText.setImeOptions(EditorInfo.IME_ACTION_DONE);

添加监听事件:

 private final EditText.OnEditorActionListener editorActionListener =            new TextView.OnEditorActionListener() {                @Override                public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {                    if (actionId == KeyEvent.ACTION_DOWN || actionId == EditorInfo.IME_ACTION_DONE) {                        //业务代码                        haoMent.createTest(Test.getId(), v.getText().toString());                        UiUtils.hideSoftKeyboard(getApplicationContext(), haoTest.this);                        v.setText("");                        v.clearFocus();                        handler.post(updateView);                    }                    return true;                }           };
View Code

但是,如果手机的输入法不是内置输入法,而是其他第三方输入法,那么可能会发生软件盘回车键无响应的问题。为了防止该类事情,则增加红色部分,响应的其KeyEvent。 这时候需要在代码中添加事件响应。

inputKey = (EditText) findViewById(R.id.contactSearch_editText);
inputKey.addTextChangedListener(watcher);
inputKey.setOnKeyListener(new View.OnKeyListener() {

@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (KeyEvent.KEYCODE_ENTER == keyCode
&& event.getAction() == KeyEvent.ACTION_DOWN) {
handler.post(updateView);
return true;
}
return false;
}
});

//响应键盘内容
public TextWatcher watcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
// 文本框改变之前的
}

@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {

}

@Override
public void afterTextChanged(Editable editable) {
handler.post(updateView);
}
};

二、android 输入类型 根据要输入的内容展现相应的软件盘,可通过修改 android:inputType 来实现。 这是一些常用的输入类型。
android:inputType="none"--输入普通字符android:inputType="text"--输入普通字符android:inputType="textCapCharacters"--输入普通字符android:inputType="textCapWords"--单词首字母大小android:inputType="textCapSentences"--仅第一个字母大小android:inputType="textAutoCorrect"--前两个自动完成android:inputType="textAutoComplete"--前两个自动完成android:inputType="textMultiLine"--多行输入android:inputType="textImeMultiLine"--输入法多行(不一定支持)android:inputType="textNoSuggestions"--不提示android:inputType="textUri"--URI格式android:inputType="textEmailAddress"--电子邮件地址格式android:inputType="textEmailSubject"--邮件主题格式android:inputType="textShortMessage"--短消息格式android:inputType="textLongMessage"--长消息格式android:inputType="textPersonName"--人名格式android:inputType="textPostalAddress"--邮政格式android:inputType="textPassword"--密码格式android:inputType="textVisiblePassword"--密码可见格式android:inputType="textWebEditText"--作为网页表单的文本格式android:inputType="textFilter"--文本筛选格式android:inputType="textPhonetic"--拼音输入格式android:inputType="number"--数字格式android:inputType="numberSigned"--有符号数字格式android:inputType="numberDecimal"--可以带小数点的浮点格式android:inputType="phone"--拨号键盘android:inputType="datetime"android:inputType="date"--日期键盘android:inputType="time"--时间键盘

密码框属性 android:password="true" 让EditText显示的内容自动为星号,输入时内容会在1秒内变成*字样。 纯数字 android:numeric="true" 让输入法自动变为数字输入键盘,同时仅允许0-9的数字输入 仅允许 android:capitalize="haoTest"仅允许接受输入haoTest,一般用于密码验证 android:editable="false"设置EditText不可编辑 android:singleLine="true"强制输入的内容在单行 android:ellipsize="end"自动隐藏尾部溢出数据,一般用于文字内容过长一行无法全部显示时 (部分属性参考网络:http://blog.csdn.net/lushengchu_luis/article/details/8699791、http://www.eoeandroid.com/thread-313140-1-1.html)

更多相关文章

  1. Edittext android:inputType 输入的限制
  2. Android:Gravity控制格式
  3. Android(安卓)EditText的设置以及软键盘的各种设置
  4. android 设置EditText只能输入大写字母,Fragment的软键盘输入模
  5. Android中ListView中显示图片和文本
  6. mac 下 android studio 识别不出真机
  7. eclipse ADT在线安装 https://dl-ssl.google.com/android/eclips
  8. 虚拟键盘弹出时挡住EditText的解决方案
  9. Android:控件AutoCompleteTextView 自动提示

随机推荐

  1. Android中通过代码修改bitmap的宽高
  2. 【Android】Android Support库介绍
  3. 关于android service 重启
  4. Android(安卓)Camera对焦相关基础自动对
  5. Android 2.2 source code construction
  6. android连接webservice
  7. android 权限管理PermissionDispatcher使
  8. Android开发学习之事件处理和Button详解
  9. android快速点击生成两个相同页面的解决
  10. Android SDK Permission大全访问权限