2

このようなリンクを持つ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);

これを a に設定すると正常に動作しTextView、使用後にtextView.setMovementMethod(LinkMovementMethod.getInstance())

ssbオブジェクトをに設定するとMaterialAlertDialogBuilder

new MaterialAlertDialogBuilder(this)
                .setTitle("My Dialog")
                .setMessage(ssb)
                .show();

クリック可能なリンクとして表示されますが、実際にはクリック MaterialAlertDialogBu​​ilder プレビュー できません。クリックできるようにする方法はありますか?setMovementMethodMaterialAlertDialogBuilder

4

3 に答える 3

3

スパン可能なコンテンツをクリック可能にするためのコード スニペットを次に示します。試してみてください。

SpannableString s = new SpannableString(msg); // Here msg should have url to enable clicking
Linkify.addLinks(s, Linkify.ALL);

その後、alertdialog コードをここに配置します

//Alert dialog code

次に、MaterialAlertDialog のテキストビューの ID を取得します。以下のコード行は、dialog.show() の後に次のように呼び出す必要があります。

((TextView)dialog.findViewById(android.R.id.message))
.setMovementMethod(LinkMovementMethod.getInstance());
于 2020-05-24T08:27:02.270 に答える