android屏蔽长按 网址的Textview跳转访问网页
2016-04-13 15:54
761 查看
比如我们的Textview里面的内容是网址 http;//www.baidu.com,然后我们设置了textview的属性android:autoLink="web",这样之后,我们点击textview系统会自动打开浏览器,
然后有个需求是长按textview弹出对话框。然后我就写长按监听事件
textview.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
//TODO 弹出对话框
return false;
}
});
这样之写之后,长按textview你会发现系统会弹出对话框,然后也会自动打开连接浏览器,好像2个不会冲突的样子。
1、这个时候是tv自己定义了onclicklistener事件,我就把setOnLongClickListener里面的返回值改为true,让用户长按之后,不要触发tv的单机事件,但是这样并没有效果,还是会弹出对话框,并且跳转打开浏览器访问百度。
2、后面问别人说可以用clickablespan,我试了下,发现这个是对html标记的去获取的,加入一段对话中用链接,好像并没有效果,没有html标记获取不到网址,也可能是自己没有研究透彻,这种方法放弃了,后面还想截取字符串中的url来着
3、后来,我操作的时候,当我长按不放手textview的时候,发现就弹出对话框来了,没有跳转到网页,当我松手的时候才跳转打开网页的,由于第一点不是onClicklistener触发打卡的,我就猜想事件传递是,setOnTouchListener的down事件---》OnLongClickListener--》setOnTouchListener的up事件--》在是打开网页的事件,如果在up的时候返回true,不让事件传递会不会不打开浏览器呢,
代码如下
boolean upReturn =true;
textview.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
//TODO 打开浏览器
upReturn = true;
return false;
}
});
textview.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction()==MotionEvent.ACTION_UP) {
return upReturn;
}else if (event.getAction()==MotionEvent.ACTION_DOWN) {
upReturn = false;
}
return false;
}
});
好了,到这里发现问题解决了,单击网址的时候可以跳转打开浏览器访问网络;长按网址不会打开浏览器,仅仅是弹出对话框
然后有个需求是长按textview弹出对话框。然后我就写长按监听事件
textview.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
//TODO 弹出对话框
return false;
}
});
这样之写之后,长按textview你会发现系统会弹出对话框,然后也会自动打开连接浏览器,好像2个不会冲突的样子。
1、这个时候是tv自己定义了onclicklistener事件,我就把setOnLongClickListener里面的返回值改为true,让用户长按之后,不要触发tv的单机事件,但是这样并没有效果,还是会弹出对话框,并且跳转打开浏览器访问百度。
2、后面问别人说可以用clickablespan,我试了下,发现这个是对html标记的去获取的,加入一段对话中用链接,好像并没有效果,没有html标记获取不到网址,也可能是自己没有研究透彻,这种方法放弃了,后面还想截取字符串中的url来着
3、后来,我操作的时候,当我长按不放手textview的时候,发现就弹出对话框来了,没有跳转到网页,当我松手的时候才跳转打开网页的,由于第一点不是onClicklistener触发打卡的,我就猜想事件传递是,setOnTouchListener的down事件---》OnLongClickListener--》setOnTouchListener的up事件--》在是打开网页的事件,如果在up的时候返回true,不让事件传递会不会不打开浏览器呢,
代码如下
boolean upReturn =true;
textview.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
//TODO 打开浏览器
upReturn = true;
return false;
}
});
textview.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction()==MotionEvent.ACTION_UP) {
return upReturn;
}else if (event.getAction()==MotionEvent.ACTION_DOWN) {
upReturn = false;
}
return false;
}
});
好了,到这里发现问题解决了,单击网址的时候可以跳转打开浏览器访问网络;长按网址不会打开浏览器,仅仅是弹出对话框
相关文章推荐
- Android使用Glide库小技巧
- Android动画之旅一开篇动画简介
- Android code snap
- Android:使用ExifInterface处理照片角度
- Android 应用接入广点通统计API 方案
- android设计模式之TemplateMethod
- Android应用的LinearLayout中嵌套RelativeLayout的布局用法
- android开发技巧——仿新版QQ锁屏下弹窗
- Android 众多优秀的下拉刷新
- 去出应用标题栏
- android 纯粹自定义控件 滑动开关
- ToolBar
- Android 使用Smack+openfire开发基于XMPP协议的聊天
- android开发之控件的属性android:weight
- 重装Ubuntu13.04后需要做的事情
- Android App中的多个LinearLayout嵌套布局实例解析
- 《Android源码设计模式》读书笔记 (14) 第14章 迭代器模式
- 【学习清单】我的Android学习清单
- Android Studio 中使用SVN注意事项
- Android开发使用的常见第三方框架汇总