1、控件EditText的setOnEditorActionListener方法的使用
setOnEditorActionListener這個(gè)方法,并不是在我們點(diǎn)擊EditText的時(shí)候觸發(fā),也不是在我們對(duì)EditText進(jìn)行編輯時(shí)觸發(fā),而是在我們編輯完之后點(diǎn)擊軟鍵盤上的各種鍵才會(huì)觸發(fā)。
通過 布局文件 中的imeOptions可以控制軟件盤右下角的按鈕顯示為不同按鈕。所以和EditorInfo搭配起來可以實(shí)現(xiàn)各種軟鍵盤的功能。
imeOptions=”actionUnspecified” –> EditorInfo.IME_ACTION_UNSPECIFIED
imeOptions=”actionNone” –> EditorInfo.IME_ACTION_NONE
imeOptions=”actionGo” –> EditorInfo.IME_ACTION_GO
imeOptions=”actionSearch” –> EditorInfo.IME_ACTION_SEARCH
imeOptions=”actionSend” –> EditorInfo.IME_ACTION_SEND
imeOptions=”actionNext” –> EditorInfo.IME_ACTION_NEXT
imeOptions=”actionDone” –> EditorInfo.IME_ACTION_DONE
布局中定義一個(gè)EditText控件
<EditText
android:id="@+id/ET_phonenumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/buttonAdd"
android:hint="@string/enter_new_note"
android:imeOptions="actionDone"// 這里和onEditorAction中actionId對(duì)應(yīng)。
android:inputType="text"/>
添加setOnEditorActionListener方法
ET_phonenumber.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
// 按下完成按鈕,這里和上面imeOptions對(duì)應(yīng)
text.setText("Editing EditorInfo.IME_ACTION_DONE");
return false; //返回true,保留軟鍵盤。false,隱藏軟鍵盤
}
}
});
2、 android 軟件盤事件響應(yīng):android: imeOptions 、KeyEvent、android: inputType
android 軟件盤事件響應(yīng):
在android中,有時(shí)需要對(duì)EditText實(shí)現(xiàn)軟件盤監(jiān)聽的場景。當(dāng)android按下軟鍵盤的時(shí)候,響應(yīng)完成、發(fā)送、搜索或者其他事件。
Google 提供了 EditorInfo、KeyEvent 的一些方法,能夠?qū)崿F(xiàn)我們需要的功能。詳細(xì)可研究:EditorInfo.class 和 KeyEvent.class.
2.1 EditorInfo
把EditText的ImeOptions屬性設(shè)置成不同的值,Enter鍵上可以顯示不同的文字或圖案。
actionNone :回車鍵,按下后光標(biāo)到下一行
actionGo : Go
actionSearch : 一個(gè)放大鏡
actionSend : Send
actionNext : Next
actionDone : Done,隱藏軟鍵盤,即使不是最后一個(gè)文本輸入框
監(jiān)聽方法:
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) {
//業(yè)務(wù)代碼
haoMent.createTest(Test.getId(), v.getText().toString());
UiUtils.hideSoftKeyboard(getApplicationContext(), haoTest.this);
v.setText("");
v.clearFocus();
handler.post(updateView);
}
return true;
}
};
2.2 KeyEvent
如果手機(jī)的輸入法不是內(nèi)置輸入法,而是其他第三方輸入法,那么可能會(huì)發(fā)生軟件盤回車鍵無響應(yīng)的問題。為了防止該類事情,響應(yīng)的其KeyEvent。文章來源:http://www.zghlxwxcb.cn/news/detail-682747.html
在代碼中添加事件響應(yīng):文章來源地址http://www.zghlxwxcb.cn/news/detail-682747.html
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;
}
});
//響應(yīng)鍵盤內(nèi)容
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);
}
};
2.3 android 輸入類型:android:inputType
android:inputType="none"--輸入普通字符
android:inputType="text"--輸入普通字符
android:inputType="textCapCharacters"--輸入普通字符
android:inputType="textCapWords"--單詞首字母大小
android:inputType="textCapSentences"--僅第一個(gè)字母大小
android:inputType="textAutoCorrect"--前兩個(gè)自動(dòng)完成
android:inputType="textAutoComplete"--前兩個(gè)自動(dòng)完成
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"--作為網(wǎng)頁表單的文本格式
android:inputType="textFilter"--文本篩選格式
android:inputType="textPhonetic"--拼音輸入格式
android:inputType="number"--數(shù)字格式
android:inputType="numberSigned"--有符號(hào)數(shù)字格式
android:inputType="numberDecimal"--可以帶小數(shù)點(diǎn)的浮點(diǎn)格式
android:inputType="phone"--撥號(hào)鍵盤
android:inputType="datetime"
android:inputType="date"--日期鍵盤
android:inputType="time"--時(shí)間鍵盤
密碼框?qū)傩?android:password="true" 讓EditText顯示的內(nèi)容自動(dòng)為星號(hào),輸入時(shí)內(nèi)容會(huì)在1秒內(nèi)變成*字樣。
純數(shù)字 android:numeric="true" 讓輸入法自動(dòng)變?yōu)閿?shù)字輸入鍵盤,同時(shí)僅允許0-9的數(shù)字輸入
僅允許 android:capitalize="haoTest" 僅允許接受輸入haoTest,一般用于密碼驗(yàn)證
android:editable="false" 設(shè)置EditText不可編輯
android:singleLine="true" 強(qiáng)制輸入的內(nèi)容在單行
android:ellipsize="end" 自動(dòng)隱藏尾部溢出數(shù)據(jù),一般用于文字內(nèi)容過長一行無法全部顯示時(shí)
到了這里,關(guān)于Android EditText的setOnEditorActionListener方法——監(jiān)聽軟鍵盤按鍵的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!