【问题标题】:Android - Hyperlink missing underlineAndroid - 超链接缺少下划线
【发布时间】:2012-08-30 19:06:32
【问题描述】:

我使用 linkify 使 textview 作为超链接工作,而且效果很好。唯一的问题是缺少下划线,谁能指出可能导致问题的原因?下划线不应该默认出现吗?

谢谢!

【问题讨论】:

    标签: android user-interface textview linkify


    【解决方案1】:

    看看 Spannable 参数

    addLinks(Spannable text,...)
    

    linkify class

    SpannableStringBuilder class

    -回复评论- SpannableStringbuilder 实现 CharSequence,可以在 TextView.setText() 中使用; 所以一旦你完成了你的下划线文本,你可以使用 TextView.setText() 并且仍然使用你正在使用的方法。

    或者参考这个:How to set underline text on textview?

    【讨论】:

    • 我使用 addLinks(TextView text, Pattern p, String scheme, Linkify.MatchFilter matchFilter, Linkify.TransformFilter transformFilter)
    • 我发现这是因为我使用了 UrlSpan 而不是 UnderlineSpan... 可以同时设置吗?
    • 是的,您可以使用 SpannableStringBuilder 类来实现,您可以设置任意数量的跨度,只要它们不相互覆盖即可。
    • 谢谢!有没有办法可以从 textView 中检索现有的 SpannableString 以便将新跨度添加到其中?
    • String yourString=someTextView.getText().toString();
    【解决方案2】:

    您可以使用TextView 小部件的xml 属性autoLink="web" 来自动检测内容是否为网址。这是一个例子:

    <TextView
        android:id="@+id/text_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@android:color/black"
        android:textColorLink="@color/hyperlink_blue"
        android:autoLink="web"
        android:textSize="16sp"/>
    

    textColor 属性用于超链接以外的文本,在上面的示例中为“黑色”,而textColorLink 属性用于任何采用超链接形式的文本 - 上面将显示为蓝色。

    您还可以通过将其他 autoLink 值“连接”在一起来附加它们:

    android:autoLink="web|email|map|phone"
    

    这适用于TextViewAppCompatTextView (SupportV7/AppCompat)、AppCompatTextView (androidx/AppCompat)

    【讨论】:

      猜你喜欢
      • 2016-06-04
      • 2015-10-29
      • 1970-01-01
      • 2012-03-06
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      相关资源
      最近更新 更多