我需要在设备的软键盘中执行搜索按钮。 mycode的:
XML文件:
<EditText
android:id="@+id/searchText"
android:layout_width="match_parent"
android:layout_height="40dp"
android:textSize="15sp"
android:hint="@string/search"
android:drawableLeft="@drawable/ic_btn_search"
android:singleLine="true"
android:drawablePadding="5dp"
android:imeOptions="actionSearch"
android:imeActionLabel="Search" android:layout_weight="1"/>
Java文件:
searchFild = (EditText) findViewById(R.id.searchEditTxt);
searchFild.setImeOptions(EditorInfo.IME_ACTION_SEARCH);
searchFild.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int arg, KeyEvent keyEvent) {
if(arg == EditorInfo.IME_ACTION_SEARCH) {
String searchString=searchFild.getText().toString();
searchBibles(searchString);
return true;
}
return false;
}
});
搜索按钮是在键盘中预设的,但点击后就不会发生任何事情。 arg是zerro。 它在android 2.2中工作,但在android 4中不起作用
答案 0 :(得分:2)
在xml中,您需要将inputType
配置为text
。在Java代码中,您可以删除searchFild.setImeOptions(EditorInfo.IME_ACTION_SEARCH);
,至少这使它适用于Android 4.1.2(这是我测试过的唯一版本)
我使用的完整代码如下所示:
<EditText
android:id="@+id/txtSearch"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:drawableLeft="@drawable/action_search"
android:drawablePadding="5dp"
android:hint="@string/input_keywords_for_search"
android:imeActionLabel="Search"
android:inputType="text"
android:imeOptions="actionSearch" />
和Java代码
final EditText txtSearch = (EditText) findViewById(R.id.txtSearch);
txtSearch.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
String searchString = txtSearch.getText().toString();
search(searchString);
return true;
}
return false;
}
});
我希望这有帮助!