Android: how to make keyboard enter button say “Search” and handle its click?
我想不出来。有些应用程序有一个edittext(文本框),当你触摸它并打开屏幕键盘时,键盘会有一个"搜索"按钮而不是一个Enter键。
我想实现这个。如何实现搜索按钮并检测搜索按钮的按下?
编辑:找到如何实现搜索按钮;在XML中,EDCOX1×0或Java,EDCOX1×1。但我该如何处理用户按搜索按钮?它与
在布局中,将输入法选项设置为"搜索"。
1 2 3 | <EditText android:imeOptions="actionSearch" android:inputType="text" /> |
在Java中添加编辑器动作侦听器。
1 2 3 4 5 6 7 8 9 10 | editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_SEARCH) { performSearch(); return true; } return false; } }); |
当用户单击搜索时隐藏键盘。除了Robby Pond答案
1 2 3 4 5 6 | private void performSearch() { editText.clearFocus(); InputMethodManager in = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); in.hideSoftInputFromWindow(searchEditText.getWindowToken(), 0); ...perform search } |
在
1 2 3 4 5 6 7 8 | <EditText android:id="@+id/search_box" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/search" android:imeOptions="actionSearch" android:inputType="text" android:maxLines="1" /> |
在Kotlin
1 2 3 4 5 6 | evLoginPassword.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_DONE) { doTheLoginWork() } true } |
部分XML代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="8dp" android:layout_marginTop="8dp" android:paddingLeft="24dp" android:paddingRight="24dp"> <EditText android:id="@+id/evLoginUserEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/email" android:inputType="textEmailAddress" android:textColor="@color/black_54_percent" /> </android.support.design.widget.TextInputLayout> <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="8dp" android:layout_marginTop="8dp" android:paddingLeft="24dp" android:paddingRight="24dp"> <EditText android:id="@+id/evLoginPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/password" android:inputType="textPassword" android:imeOptions="actionDone" android:textColor="@color/black_54_percent" /> </android.support.design.widget.TextInputLayout> </LinearLayout> |
通过XML:
1 2 3 4 5 6 7 | <EditText android:id="@+id/search_edit" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/search" android:imeOptions="actionSearch" android:inputType="text" /> |
用Java编写:
1 2 3 | editText.clearFocus(); InputMethodManager in = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); in.hideSoftInputFromWindow(searchEditText.getWindowToken(), 0); |