Ami*_*ara 5 android android-alertdialog clickablespan spannablestringbuilder material-components
我有一个带有这样链接的SpannableStringBuilder对象,ClickableSpan
SpannableStringBuilder ssb = new SpannableStringBuilder("Hi StackOverflow!");
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(@NonNull View widget) {
Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_SHORT).show();
}
};
ssb.setSpan(clickableSpan, 3, 16, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
Run Code Online (Sandbox Code Playgroud)
TextView当我将其设置为 a并使用后效果很好textView.setMovementMethod(LinkMovementMethod.getInstance())
当我将ssb对象设置为 时MaterialAlertDialogBuilder,
new MaterialAlertDialogBuilder(this)
.setTitle("My Dialog")
.setMessage(ssb)
.show();
Run Code Online (Sandbox Code Playgroud)
它显示为可点击的链接,但实际上无法点击它
我找不到使用setMovementMethod中的消息的方法MaterialAlertDialogBuilder。有什么办法让它可以点击吗?
这是使您的可跨内容可点击的代码片段,请尝试一下。
SpannableString s = new SpannableString(msg); // Here msg should have url to enable clicking
Linkify.addLinks(s, Linkify.ALL);
Run Code Online (Sandbox Code Playgroud)
之后将您的警报对话框代码放在这里
//Alert dialog code
Run Code Online (Sandbox Code Playgroud)
然后获取MaterialAlertDialog的textview的id,下面的代码行必须在dialog.show()之后调用,如下所示,
((TextView)dialog.findViewById(android.R.id.message))
.setMovementMethod(LinkMovementMethod.getInstance());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1646 次 |
| 最近记录: |