dialog屏蔽返回键和监听textview的超链接

1、有的时候,我们希望点击系统返回按钮,我们的dialog弹窗不消失。
此时我们可以通过监听dialog的OnKeyListener接口,屏蔽返回按键。

dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
			@Override
			public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
				if (keyCode == KeyEvent.KEYCODE_BACK)
				{
					return true;
				}
				else
				{
					return false; //默认返回 false
				}
			}
		});

2、TextView里显示的字符串含有超链接,这时点击默认会调用系统浏览器打开,如果想调用自己的webview打开此链接,需要获取并设置此字符串的ClickableSpan,在ClickableSpan实现点击跳转逻辑。

监听代码

private CharSequence getClickableHtml(String html) {
		Spanned spannedHtml = Html.fromHtml(html);
		SpannableStringBuilder clickableHtmlBuilder = new SpannableStringBuilder(spannedHtml);
		URLSpan[] urls = clickableHtmlBuilder.getSpans(0, spannedHtml.length(), URLSpan.class);
		for(final URLSpan span : urls) {
			if(span.getURL() != null && span.getURL().startsWith("http")){
				String title = "用户协议";
				if(span.getURL().contains("89")){
					title = "隐私政策";
				}
				setLinkClickable(clickableHtmlBuilder, span,title);
			}
		}
		return clickableHtmlBuilder;
	}

实现点击逻辑代码:

private void setLinkClickable(final SpannableStringBuilder clickableHtmlBuilder,
							  final URLSpan urlSpan, final String title) {
	int start = clickableHtmlBuilder.getSpanStart(urlSpan);
	int end = clickableHtmlBuilder.getSpanEnd(urlSpan);
	int flags = clickableHtmlBuilder.getSpanFlags(urlSpan);
	ClickableSpan clickableSpan = new ClickableSpan() {
		public void onClick(View view) {
			Intent intent = new Intent();
			intent.setClass(LoginActivity.this, WebActivity.class);
			intent.putExtra("url", urlSpan.getURL());
			intent.putExtra("title", title);
			LoginActivity.this.startActivity(intent);

		}
	};
	clickableHtmlBuilder.setSpan(clickableSpan, start, end, flags);
}

调用代码:

final TextView text = (TextView) dialog.findViewById(R.id.text);
//此字符串定义在string配置中时无法正确显示超链接,此处把含有超链接的字符串定义在java代码中。
		String url = "点击同意即表示您已阅读并同意<a href=\"http://www.baidu.com\">《用户注册协议》</a>与<a href=\"http://www.baidu.com\">《隐私政策》</a>";
		//调用监听方法
		text.setText(getClickableHtml(url));
		//不设置此项超链接无法正常显示
		text.setMovementMethod(LinkMovementMethod.getInstance());

xml布局代码:

<TextView
            android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="20dip"
            android:text="@string/xieyi"
            android:autoLink="web"
            android:textStyle="bold"
            android:textColor="@color/light_gray8"
            android:textSize="14sp"/>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值