Android开发中如何去除autoLink的下划线
程序员文章站
2022-06-28 10:11:47
很多时候我们开发中使用TextView的autoLink属性,可以很方便的识别出一段文本中的网址、电话、邮箱等等。但是通常情况下系统自动识别的link会有下划线,那么该如何去除这个...
很多时候我们开发中使用TextView的autoLink属性,可以很方便的识别出一段文本中的网址、电话、邮箱等等。但是通常情况下系统自动识别的link会有下划线,那么该如何去除这个下划线呢?
首先,我们需要知道这个下划线哪里来的,直接打开URLSpan的父类ClickableSpan:
/* * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.text.style; import android.text.TextPaint; import android.view.View; /** * If an object of this type is attached to the text of a TextView * with a movement method of LinkMovementMethod, the affected spans of * text can be selected. If clicked, the {@link #onClick} method will * be called. */ public abstract class ClickableSpan extends CharacterStyle implements UpdateAppearance { /** * Performs the click action associated with this span. */ public abstract void onClick(View widget); /** * Makes the text underlined and in the link color. */ @Override public void updateDrawState(TextPaint ds) { ds.setColor(ds.linkColor); ds.setUnderlineText(true); } }
上述41行可以看到通过ds.setUnderlineText设置了下划线,找到了原因,就比较好办了。我们自己写一个类重写updateDrawState即可:
import android.annotation.SuppressLint; import android.text.TextPaint; import android.text.style.URLSpan; import android.text.style.UnderlineSpan; /** * * * @author pzyoung * */ @SuppressLint("ParcelCreator") public class NoUnderlineSpan extends URLSpan { public NoUnderlineSpan(String url) { super(url); } @Override public void updateDrawState(TextPaint ds) { if (ds != null) { ds.setColor(ds.linkColor); ds.setUnderlineText(false); } } }
上一篇: 爆笑二货让你露出笑容
推荐阅读
-
Android开发中如何解决Fragment +Viewpager滑动页面重复加载的问题
-
Android开发如何加载WebView中的H5页面并全屏视频播放
-
Android开发中如何修改AndroidStudio的默认文件编码
-
android定时器开发中如何实现不受时差的影响
-
Android开发中如何去除autoLink的下划线
-
Android开发中如何实现本地网页的加载
-
Android开发中如何解决Fragment +Viewpager滑动页面重复加载的问题
-
Android开发如何加载WebView中的H5页面并全屏视频播放
-
Android开发中如何修改AndroidStudio的默认文件编码
-
android定时器开发中如何实现不受时差的影响