listview添加尾部布局中有edittext,edittext调不出剪贴板弹窗

来源:互联网 发布:骑兵进阶数据 编辑:程序博客网 时间:2024/06/06 23:56

之前我没有遇到这个问题,因为剪贴板是系统自带的,一般不会出现,输入框调不出剪贴板的弹窗
但是当listview添加尾部布局中有edittext时,edittext就调不出剪贴板弹窗,忽然我就搞不懂了!
这个问题我是解决了的,我的解决过程:

1 首先确定不是因为焦点的问题
因为输入框是可以点击,可以正常输入的

2 listview的长按事件和edittext长按事件冲突,禁止listview长按事件没用
我给listview中写了长按监听事件,然后,长按输入框,发现竟然走了listview长按监听事件,原来是,尾部布局是listview的一个item,长按输入框的同时,就是在长按listview的item,所以有一个办法就是,禁用listview的长按监听;但是我长了很多资料,都没有一个详细有用的;

3 设置listview焦点,是否可用都为false,没用
没有办法禁用listview的长按监听,可以尝试给listview焦点,可用性设置为false,设置为不可用,经测试以不行!

4 先拿剪贴版上值,赋值给edittext,在给edittext设空,调出剪贴弹窗(剪贴版上不能为空,也就是不能没有赋值内容),解决
最后,我无计可施,只能用最low的办法,代码如下;
private int PASTE_FIRST=0;
listview.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
ClipboardManager clipboard =
(ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);//系统剪贴板管理
CharSequence text = clipboard.getText();//得到剪贴板文件管理器
if (PASTE_FIRST == 1 && text == null)
PASTE_FIRST = 0;
if (PASTE_FIRST == 0) {//首次设置后,不用在给edittext设为空,也能调出剪贴板弹窗
if (text == null)
ToastUtils.showToast(this, “粘贴内容不能为空!”);
else {
edittext.setText(text.toString());
edittext.setText(“”);
PASTE_FIRST = 1;
}
}
return false;
}
});

5 自己写一个弹窗,替代系统的剪贴板(备选)

6 这个坑爹的问题,是系统遗留的bug,真想给谷歌打个电话,或者@谷歌:你他妈的能不能把代码写的好一点!

0 0