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"/>