При использовании AutoCompleteTextView
список подсказок с раскрывающимся списком появляется, когда программная клавиатура все еще видна. Это имеет смысл, так как часто гораздо более эффективно печатать последующие символы, чтобы сузить список.
Но если пользователь хочет перейти по списку предложений, он становится крайне утомительным, когда клавиатура программного обеспечения все еще работает (это даже большая проблема, когда устройство находится в альбомной ориентации). Навигация по списку намного проще, если клавиатура не забивает экран. К сожалению, поведение по умолчанию сначала удаляет список, когда вы нажимаете клавишу "Назад" (хотя в версиях программного обеспечения задней клавиши отображается изображение, в котором говорится, что "нажатие на это скроет клавиатуру" ).
Вот пример barebones, который демонстрирует, о чем я говорю:
public class Main2 extends Activity {
private static final String[] items = {
"One",
"Two",
"Three",
"Four",
"Five"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AutoCompleteTextView actv = new AutoCompleteTextView(this);
actv.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
actv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items));
actv.setThreshold(1);
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
ll.addView(actv);
setContentView(ll);
}
}
Помимо того, что это неинтуитивно (подсказка на задней клавише подсказывает, что обратное нажатие будет отправлено на клавиатуру), это делает навигацию по предложениям AutoCompleteTextView
крайне утомительной.
Что такое наименьший назойливый способ (например, перехват назад на onBackPressed()
в каждом действии и его маршрутизация, безусловно, не идеальны), чтобы сделать первый обратный вызов скрыть клавиатуру и второй удалить список предложений?