Я разрабатываю приложение для онлайн-магазина. Одной из основных особенностей является функция поиска. Поскольку мне нужно поддерживать API 8 и выше вместо SearchView
, я использовал EditText
, как показано ниже, для реализации вида поиска.Как обращаться с нажатой клавишей с нажатой клавишей
<EditText android:id="@+id/search_edit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_toLeftOf="@+id/search_button"
android:background="@color/white"
android:ems="20"
android:imeOptions="actionDone"
android:maxLines="1"
android:textColor="@color/black"
android:textColorHint="@color/ebuy_color_second_strip"
android:textSize="18sp" >
</EditText>
Теперь я хочу, чтобы обрабатывать клавишу ввода на клавиатуре, таким образом, чем когда пользователь нажимает кнопку ввода, начинается поиск активности. Код, который я использовал, как показано ниже:
search = (EditText) findViewById(R.id.search_edit);
search.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN)
&& (keyCode == KeyEvent.KEYCODE_ENTER)) {
String query_text = search.getText().toString().trim();
try {
query_text = URLEncoder.encode(query_text, "utf-8");
} catch (UnsupportedEncodingException e) {
}
String full_query = query_text;
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(search.getWindowToken(), 0);
Intent bussiness = new Intent(EbuyHomeScreen.this,
EbuySearchActivity.class);
Bundle basket_buss_category = new Bundle();
basket_buss_category.putString(EbuyUtils.TAG_CATEGORY_CODE, full_query);
bussiness.putExtras(basket_buss_category);
startActivity(bussiness);
return true;
}
return false;
}
});
Этот способ отлично работает хорошо с андроид клавиатуры и некоторых других клавиатур, но когда я использую салфетки или быстрые клавиатуры и другие персонализированных клавиатур, которые загружаются из Google Play Маркета это не работает, и вместо того, чтобы начинать прыжки в новой строке. Может кто-нибудь помочь мне решить эту проблему.
Как насчет XML-части, я должен изменить там? – Xhulio
@Xhulio вам не нужно менять свой xml –
@ Аргумент не работает, я также изменил с IME_ACTION_SEARCH на IME_ACTION_DONE, но все же он не работает. – Xhulio