带有多个点击事件的Android TextView



在我的android应用程序中,我必须在Textview上显示标签。同一个textView中可以有多个标签,我想在每个标签中添加点击事件。同一个文本视图中可能有其他文本。我怎么能以这样的方式格式化文本?所有标签都可以用粗体文本和其他文本作为普通文本点击。假设在文本视图中设置文本"#tag1文本消息#tag2#tag3普通文本",其中#tag1、#tag2和#tag3为粗体文本,其余文本为普通文本样式,那么我如何实现这一点。

提前谢谢。

你可以使用这样的东西,

String str = "<b> #tag1 </b> " + textMessage + "<b> #tag2  #tag3 </b>" + normalText; 
your_textview.setText(Html.fromHtml(str));

您也可以尝试SpannableStringBuilder。

您可以尝试使用SpannableStringBuilder

SpannableStringBuilder可以:

  • 更改文本颜色
  • 多次点击操作等

为了代码参考,你可以查看这个后

private static void singleTextView(TextView textView, final String userName, String status, final String songName) {
    SpannableStringBuilder spanText = new SpannableStringBuilder();
    spanText.append(userName);
    spanText.setSpan(new ClickableSpan() {
        @Override
        public void onClick(View widget) {
            // On Click Action
        }
        @Override
        public void updateDrawState(TextPaint textPaint) {
            textPaint.setColor(textPaint.linkColor);    // you can use custom color
            textPaint.setUnderlineText(false);    // this remove the underline
        }
    }, spanText.length() - userName.length(), spanText.length(), 0);
    spanText.append(status);
    spanText.append(songName);
    spanText.setSpan(new ClickableSpan() {
        @Override
        public void onClick(View widget) {
            // On Click Action
        }
        @Override
        public void updateDrawState(TextPaint textPaint) {
            textPaint.setColor(textPaint.linkColor);    // you can use custom color
            textPaint.setUnderlineText(false);    // this remove the underline
        }
    },spanText.length() - songName.length(), spanText.length(), 0);
    textView.setMovementMethod(LinkMovementMethod.getInstance());
    textView.setText(spanText, TextView.BufferType.SPANNABLE);
}

相关内容

  • 没有找到相关文章

最新更新