Android应用开发Android开发中如何去除autoLink的下划线
白羽 2018-11-14 来源 :网络 阅读 306 评论 0

摘要:本文将带你了解Android应用开发Android开发中如何去除autoLink的下划线,希望本文对大家学Android有所帮助。

    本文将带你了解Android应用开发Android开发中如何去除autoLink的下划线,希望本文对大家学Android有所帮助。


<

很多时候我们开发中使用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频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程