你好 我有一個搜索EditText
和搜索Button
。當我輸入搜索到的文字時,我想用軟鍵盤上的ENTER鍵代替搜索Button
來激活搜索功能。使用軟鍵盤上的「ENTER」鍵代替點擊按鈕
感謝您的幫助。
你好 我有一個搜索EditText
和搜索Button
。當我輸入搜索到的文字時,我想用軟鍵盤上的ENTER鍵代替搜索Button
來激活搜索功能。使用軟鍵盤上的「ENTER」鍵代替點擊按鈕
感謝您的幫助。
您可以在EditText
上設置OnKeyListener
。
這是我自己的代碼示例。我有一個名爲addCourseText
的EditText
,當單擊回車鍵或d-pad時,它將調用功能addCourseFromTextBox
。
addCourseText = (EditText) findViewById(R.id.clEtAddCourse);
addCourseText.setOnKeyListener(new OnKeyListener()
{
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_DOWN)
{
switch (keyCode)
{
case KeyEvent.KEYCODE_DPAD_CENTER:
case KeyEvent.KEYCODE_ENTER:
addCourseFromTextBox();
return true;
default:
break;
}
}
return false;
}
});
可能是你可以一個屬性添加到您的EditText這樣的:
android:imeOptions="actionSearch"
如果您正在構建搜索編輯文本,這是更簡單的解決方案。 – stevyhacker 2016-05-10 14:28:07
的屬性添加到的EditText像 機器人:imeOptions = 「actionSearch」
這是最好的方式做功能
和imeOptions也有一些其他的值,如「去」,「下一步」,「完成」等。
爲避免焦點前進到下一個可編輯字段(如果有的話),您可能需要忽略按鍵事件,但是處理按鍵事件。我還傾向於首先對keyCode進行過濾,假設它會稍微更有效。順便說一句,請記住,返回true意味着您已處理該事件,因此沒有其他偵聽器會這樣做。無論如何,這是我的版本。
ETFind.setOnKeyListener(new OnKeyListener()
{
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER
|| keyCode == KeyEvent.KEYCODE_ENTER) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
// do nothing yet
} else if (event.getAction() == KeyEvent.ACTION_UP) {
findForward();
} // is there any other option here?...
// Regardless of what we did above,
// we do not want to propagate the Enter key up
// since it was our task to handle it.
return true;
} else {
// it is not an Enter key - let others handle the event
return false;
}
}
});
<EditText
android:id="@+id/search"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/search_hint"
android:inputType="text"
android:imeOptions="actionSend" />
然後,您可以通過定義的EditText元素的TextView.OnEditorActionListener監聽行動上的按鈕按下。在您的偵聽器中,響應EditorInfo類中定義的相應IME操作ID,例如IME_ACTION_SEND。例如:
EditText editText = (EditText) findViewById(R.id.search);
editText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
boolean handled = false;
if (actionId == EditorInfo.IME_ACTION_SEND) {
sendMessage();
handled = true;
}
return handled;
}
});
來源:https://developer.android.com/training/keyboard-input/style.html
這是我的應用程序如何處理
//searching for the Edit Text in the view
final EditText myEditText =(EditText)view.findViewById(R.id.myEditText);
myEditText.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN)
if ((keyCode == KeyEvent.KEYCODE_DPAD_CENTER) ||
(keyCode == KeyEvent.KEYCODE_ENTER)) {
//do something
//true because you handle the event
return true;
}
return false;
}
});
非常感謝的一個樣本,偉大工程 – 2010-12-16 08:28:32
事實上,它不能保證軟鍵。例如,它不適用於Nexus 7(Android 4.2)上的「ENTER」和它的「BACK」功能。 – Ghedeon 2012-11-28 23:01:24
我看過的最好的例子! – 2012-12-23 02:32:34