【问题标题】:Android TextView with multiple click events具有多个点击事件的 Android TextView
【发布时间】:2018-05-04 15:59:15
【问题描述】:

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

提前致谢。

【问题讨论】:

标签: android textview spannable text-styling


【解决方案1】:

你可以使用这样的东西,

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

你也可以试试SpannableStringBuilder

【讨论】:

    【解决方案2】:

    您可以尝试使用SpannableStringBuilder

    SpannableStringBuilder 可以:

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

    代码参考可以查看post

    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);
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      • 1970-01-01
      • 1970-01-01
      • 2012-10-02
      • 2011-06-04
      • 1970-01-01
      相关资源
      最近更新 更多