EditText和PopupWindow的事件冲突

来源:互联网 发布:java打印输出语句 编辑:程序博客网 时间:2024/05/18 01:44
因为在工程中想要实现账号联想的功能(即:如果有登陆记录的账号,可以在退出登录以后再次输入时直接进行联想而不需要客户手动输入账号的全部内容)。
在最初的想法是,点击edittext然后在其下方弹出一个popupwindow,数据来源是在登陆成功后SharedPrefrence所存储的String转换成的数组。
效果是先后发现出现了事件冲突。
冲突如下:
在点击edittext弹出popupwindow后,edittext无法接续编辑
解决方法有以下几种:
①使用android4.0特性中AutoCompleteTextView
     自动完成文本框
     
final AutoCompleteTextView mobile = (AutoCompleteTextViewfindViewById(R.id.mobile_text);
final EditText password = (EditTextfindViewById(R.id.password_text);
String account_caches = SpUtils.getInstance(LoginActivity.this).getString("account_caches""");
if (account_caches != null && !account_caches.equals("")) {

    String[] account = account_caches.split(",");
    mobile.setAdapter(new ArrayAdapter<String>(this,R.layout.support_simple_spinner_dropdown_item, account));


这有一篇比较详细的参考文章,如果我上面写的不够明白的话可以去看看这篇介绍。
http://blog.csdn.net/ls1110924/article/details/22905367

 

一是万万不可给popupwindow设置得到焦点,即setFocusable(true),不然他会抢占EditText的焦点,使得EditText得不到输入,


二是不能给popupwindow中的listView绑定OnItemClickListener监听器,此时点击是有选中的效果,即背景色发生了切换,但是监听器的方法没有触发。


③也可以在布局中放一个listview,来控制他的显示(想法)
http://blog.csdn.net/ls1110924/article/details/22905367
2 0