使用AutoCompleteTextView
时,下拉建议列表与软键盘仍然可见。这很有意义,因为通常更有效率的方法是输入后续字符以缩小列表。
但是,如果用户想要浏览建议列表,当软键盘仍然存在时会变得非常繁琐(尤其是当设备处于横向方向时更为严重)。没有键盘占用屏幕空间时,浏览列表要容易得多。不幸的是,当您按下返回键时,默认行为首先移除列表(即使在返回键的软件版本中,它显示了说明“按下此键将隐藏键盘”的图像)。
以下是一个简单示例,演示了我所说的问题:
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
建议变得极其繁琐。
最不具侵入性的方法是什么(例如,在每个活动中捕获后退并相应地进行路由绝对不是理想的解决方案)以使第一次后退按键隐藏键盘,第二次后退按键则移除建议列表?