我正在使用以下代码使我的TextView
看起来像一个链接,当用户点击它时,我会显示AlertDialog
。但是在用户离开对话框后文本保持选中状态,看起来很难看。
TextView terms = (TextView)findViewById(R.id.TextViewTerms);
terms.setMovementMethod(LinkMovementMethod.getInstance());
Spannable spanTerms = (Spannable)terms.getText();
ClickableSpan clickSpan = new ClickableSpan()
{
@Override
public void onClick(final View view)
{
new AlertDialog.Builder(AboutActivity.this)
.setTitle(R.string.title_terms)
.setMessage(R.string.terms_of_use)
.setCancelable(true)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
})
.show();
}
};
spanTerms.setSpan(clickSpan, 0, spanTerms.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
我也试过调用setSelected(false)
,但这也不起作用。有什么想法吗?
答案 0 :(得分:2)
只需在对话框的Selection.setSelection(spanTerms, 0);
方法中添加onClick
即可。
答案 1 :(得分:0)
如果您只想点击一次文字,那么就可以这样做。
添加一个布尔变量isClickedOnce
使用false
对其进行初始化,然后在AlertDialog.Builder
之前检查它是否为false
,如下所示:
ClickableSpan clickSpan = new ClickableSpan() {
@Override
public void onClick(final View view) {
if (!isClickedOnce) {
new AlertDialog.Builder(AboutActivity.this)
.setTitle("title_terms")
.setMessage("terms_of_use")
.setCancelable(true)
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(
DialogInterface dialog,
int which) {
isClickedOnce = true;
Log.i("isClickedOnce","isClickedOnce"+isClickedOnce);
dialog.dismiss();
}
}).show();
}
}
};
答案 2 :(得分:0)
您可以通过自定义TextView执行此操作。 基本上,仅在视图处于按下状态时才启用突出显示。
@Override
public void setPressed(boolean pressed) {
if (pressed) {
setHighlightColor(ContextCompat.getColor(getContext(), R.color.highlight_color));
} else {
setHighlightColor(Color.TRANSPARENT);
}
super.setPressed(pressed);
}
答案 3 :(得分:0)
只是:
textView.setHighlightColor(Color.TRANSPARENT);