popupwindow和外部输入EditText控件焦点问题!

Android 码拜 9年前 (2015-05-10) 2134次浏览 0个评论
 

popupwindow和外部输入EditText控件焦点问题!
如图,我现在的任务是移植android4.0的自动完成文本框到低版本的系统中。
我给图中的EditText绑定了一个TextWatcher监听器,只要EditText中的内容发生了变化,就打开下拉列表进行匹配。所以只要我输入一个字母,就开始匹配,然后弹出下拉列表。
这时候问题来了,如果我设置popupwindow得到焦点,这时候的下拉列表是可以点击的,但是不能再输入了;但是如果设置popupwindow没有焦点,是可以正常输入的,但是popupwindow上的下拉列表就不能点击了!两天了,看源码也没看出个所以然了
所以跪求大神解答,强烈表示愿意为大神捡肥皂!

试试:popupwindow焦点问题解决方案
在android 开发过程中,总会遇到一些问题,比如popupwindow焦点问题等等,我们该如何解决呢?需要的朋友可以了解下
1.问题:创建了一个PopupWindow,里面要显示listView,这样子的话,listView的itemClick要得到实现,必须要让PopupWindow得到焦点,可是PopupWindow得到焦点之后,parentView     的一些onTouch事件就得不到响应,在这个时候应该怎么办? 
2.解决:PopupWindow得到焦点:window.setFocusable(true); 
    也要让除了PopupWindow之外的得到响应需要–window.setBackgroundDrawable(new BitmapDrawable()); 
3.注意:如若还不能实现,上面两句代码换一下先后顺序~~~
10分
    //设置可以获取焦点,否则弹出菜单中的EditText是无法获取输入的
    popWindow.setFocusable(true);
    //这句是为了防止弹出菜单获取焦点之后,点击activity的其他组件没有响应
    popWindow.setBackgroundDrawable(new BitmapDrawable()); 
引用 1 楼 ameyume 的回复:

试试:popupwindow焦点问题解决方案
在android 开发过程中,总会遇到一些问题,比如popupwindow焦点问题等等,我们该如何解决呢?需要的朋友可以了解下
1.问题:创建了一个PopupWindow,里面要显示listView,这样子的话,listView的itemClick要得到实现,必须要让PopupWindow得到焦点,可是PopupWindow得到焦点之后,parentView     的一些onTouch事件就得不到响应,在这个时候应该怎么办? 
2.解决:PopupWindow得到焦点:window.setFocusable(true); 
    也要让除了PopupWindow之外的得到响应需要–window.setBackgroundDrawable(new BitmapDrawable()); 
3.注意:如若还不能实现,上面两句代码换一下先后顺序~~~

不行啊    试过了

引用 2 楼 ameyume 的回复:

    //设置可以获取焦点,否则弹出菜单中的EditText是无法获取输入的
    popWindow.setFocusable(true);
    //这句是为了防止弹出菜单获取焦点之后,点击activity的其他组件没有响应
    popWindow.setBackgroundDrawable(new BitmapDrawable()); 

额   我的EditText不是弹出来的popupwindow中的,是本来就存在在Activity上的,是在EditText中有输入以后弹出来的popupwindow………….这时候EditText没有焦点就得不到输入

上面的popupwindow只是个例子,你到popupWindow是ListView而已。
EditText没有焦点肯定是无法输入的。
焦点在EditText上时,点击PopupWindow上的ListView的item时怎么会没有反应?
就好比有两个button A和B,此时焦点在A上,但是B还是可以点击的啊。
引用 5 楼 ameyume 的回复:

上面的popupwindow只是个例子,你到popupWindow是ListView而已。
EditText没有焦点肯定是无法输入的。
焦点在EditText上时,点击PopupWindow上的ListView的item时怎么会没有反应?
就好比有两个button A和B,此时焦点在A上,但是B还是可以点击的啊。

有反应,selector产生了反应,也就是说选中和未选中的背景色不同,但是没有触发监听器………..
我现在手头没代码,明天发给你一份  你可以看看

引用 5 楼 ameyume 的回复:

上面的popupwindow只是个例子,你到popupWindow是ListView而已。
EditText没有焦点肯定是无法输入的。
焦点在EditText上时,点击PopupWindow上的ListView的item时怎么会没有反应?
就好比有两个button A和B,此时焦点在A上,但是B还是可以点击的啊。

另外  多谢你的热心解答

10分
为什么要用popupwindow
?怎么不用AutoCompleteTextView
10分
引用 楼主 ls1110924 的回复:

popupwindow和外部输入EditText控件焦点问题!
如图,我现在的任务是移植android4.0的自动完成文本框到低版本的系统中。
我给图中的EditText绑定了一个TextWatcher监听器,只要EditText中的内容发生了变化,就打开下拉列表进行匹配。所以只要我输入一个字母,就开始匹配,然后弹出下拉列表。
这时候问题来了,如果我设置popupwindow得到焦点,这时候的下拉列表是可以点击的,但是不能再输入了;但是如果设置popupwindow没有焦点,是可以正常输入的,但是popupwindow上的下拉列表就不能点击了!两天了,看源码也没看出个所以然了
所以跪求大神解答,强烈表示愿意为大神捡肥皂!

设置popupwindow得到焦点,这时候的下拉列表是可以点击的。
你可以截获popupwindow的消息,获取输入的内容把数据反映到EDIT控件上,毕竟是两个控制,没有两个焦点的说法,不过可以模拟效果来实现。

引用 9 楼 afairycell 的回复:

?怎么不用AutoCompleteTextView

我就是在模仿AutoCompleteTextView
主要是因为AutoCompleteTextView在各个版本上的UI都不一样
所以做一个一样效果的

引用 8 楼 pengguohua1988 的回复:

为什么要用popupwindow

用dialog吗?

不如用SurfaceView。。无所不能。。
引用 5 楼 ameyume 的回复:

上面的popupwindow只是个例子,你到popupWindow是ListView而已。
EditText没有焦点肯定是无法输入的。
焦点在EditText上时,点击PopupWindow上的ListView的item时怎么会没有反应?
就好比有两个button A和B,此时焦点在A上,但是B还是可以点击的啊。

http://pan.baidu.com/s/1qWKyfgS
这是我上传的工程,你可以看一下

引用 10 楼 afairycell 的回复:
Quote: 引用 楼主 ls1110924 的回复:

popupwindow和外部输入EditText控件焦点问题!
如图,我现在的任务是移植android4.0的自动完成文本框到低版本的系统中。
我给图中的EditText绑定了一个TextWatcher监听器,只要EditText中的内容发生了变化,就打开下拉列表进行匹配。所以只要我输入一个字母,就开始匹配,然后弹出下拉列表。
这时候问题来了,如果我设置popupwindow得到焦点,这时候的下拉列表是可以点击的,但是不能再输入了;但是如果设置popupwindow没有焦点,是可以正常输入的,但是popupwindow上的下拉列表就不能点击了!两天了,看源码也没看出个所以然了
所以跪求大神解答,强烈表示愿意为大神捡肥皂!

设置popupwindow得到焦点,这时候的下拉列表是可以点击的。
你可以截获popupwindow的消息,获取输入的内容把数据反映到EDIT控件上,毕竟是两个控制,没有两个焦点的说法,不过可以模拟效果来实现。

http://pan.baidu.com/s/1qWKyfgS
工程文件我发上来了,大神可以帮忙看一下吗?

可以用AutoCompleteTextView
引用 16 楼 pengguohua1988 的回复:

可以用AutoCompleteTextView

我现在在做仿4.0的AutoCompleteTextView的控件

不能点击和不能输入的情况我都没碰到…LZ你看着办吧。你是不是要那种选择高亮的效果?而不是输入或者点击效果?
引用 18 楼 afairycell 的回复:

不能点击和不能输入的情况我都没碰到…LZ你看着办吧。你是不是要那种选择高亮的效果?而不是输入或者点击效果?

我要的是和系统的一样
能一边输入,同时根据输入的内容匹配相近的item到popupwindow上的listview上
你有没有类似的东西  就搭救

引用 18 楼 afairycell 的回复:

不能点击和不能输入的情况我都没碰到…LZ你看着办吧。你是不是要那种选择高亮的效果?而不是输入或者点击效果?

我上传的有工程文件,你可以下载下来看看,到底是什么原因

LZ是没有设置匹配规则吧?推荐下一篇好文章http://blog.csdn.net/illidantao/article/details/9472409
大神来了!!

今天下午碰到与你一样的问题,查看了下PopupWindow的源码结果还是没有解决;后来查看了http://blog.csdn.net/illidantao/article/details/9472409这个博客重写的EditText来搞定;确实是解决了,但是没有用到popupwindow;但是我还是坚持想用原来这个方案

灵感突然爆发用了个最简单的方式解决了如下:

popupwindow里面初始化listView,listView 设置setAdapter

private class MyAdapter extends BaseAdapter {

@Override
public int getCount() {
// TODO Auto-generated method stub
return listBean == null ? 0 : listBean.size();
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View v = LayoutInflater.from(AddPatientX.this).inflate(
R.layout.auto_text_item, null);
TextView tv1 = (TextView) v.findViewById(R.id.tv1);
tv1.setText(listBean.get(position).getFname());

v.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println(“xxxxxxxxxxxxxxxx”);
}
});

return v;
}

}

在adpter的getView里面可以监听到listView的每个itemView的点击事件,说明了listView的每个item是能被点击的,但是这个点击事件没有再传给listView从而去调用OnItemClickListener这个监听器;具体原因还要超级牛神来解决了

希望能帮到你
问题就绝了吗
楼主解决了吗  我也碰到了同样的问题 求帮忙啊
下面直接用个Listview不可以吗,为啥需要pop啦
这个功能我实现过,目前已经做好啦
楼主,这个问题解决了吗?可以把例子发到我的邮箱吗?752790234@qq.com
楼主问题解决了么,我现在也遇到这个了,纠结了一天了。请楼主指点下
autocompletetextview只能自动匹配前面相同的字,不能匹配中间或者后面相同的字,比如检索a,不能搜索出来cac,只能是a,abc…
楼主问题解决了么 ,求指教啊…
pop.setFocusable(false) 或setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED)在show之前

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明popupwindow和外部输入EditText控件焦点问题!
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!