一、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);

添加监听事件:

Android 软键盘
 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. Android:Gravity控制格式
  2. Android 如何使Edittext不弹出软键盘
  3. android键盘弹出之后界面整体上移,顶出去了
  4. Android打开activity的时候,设置editText不弹出软键盘
  5. Android EditText的设置以及软键盘的各种设置
  6. Android 软键盘弹出时,把整个界面往上挤 的解决办法
  7. 35、键盘布局的tableLayout备份
  8. android 设置EditText只能输入大写字母,Fragment的软键盘输入模
  9. android EditText 实现搜索框点击搜索隐藏键盘

随机推荐

  1. Android软件加安全码
  2. android 加载recyclerView的popupWindow
  3. android:打开第三方数据库
  4. Android(安卓)AsyncTask 分析
  5. Android_Animation
  6. android 图片压缩工具类
  7. Android(安卓)TextView跑马灯
  8. Background processing with IntentServi
  9. How to Use Android(安卓)ADB Command Li
  10. Android(安卓)ubuntu 开发环境安装