Android TextView出现双下划线?

一、问题描述

在华为机型荣耀V10中Android版本9.0使用普通的方式设置下划线,却出现了双下划线的现象。

二、TextView设置下划线方式

正常情况下可以有五种设置下划线

1.字符串资源中设置下划线属性(用<u>标签,最简单的方法)

<resources>
    <string name="hello Android"><u>phone:0123456</u></string>
    <string name="app_name">myAndroid</string>
</resources>

2.TextView设置autoLink属性(会主动调用系统浏览器,跳转链接

<TextView xmlns:android="http://schemas.android.com/apk/res/android"  
     android:id="@+id/auto_tv"
     android:layout_width="match_parent"  
     android:layout_height="match_parent"  
     android:autoLink="all"  
     android:text="@string/android_auto"  />

 在代码中设置:
1、使用TextView的Paint的属性

tvTest.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); //下划线
tvTest.getPaint().setAntiAlias(true);//抗锯齿

2、使用SpannableString类( 富文本)

SpannableString content = new SpannableString(str);
content.setSpan(new UnderLineSpan, 0, str.length(), 0);

3、使用Html.fromHtml()

TextView textView = (TextView)findViewById(R.id.tv_test); 
textView.setText(Html.fromHtml("<u>"+"0123456"+"</u>"));

三、问题原因

I’m sorry I don’t know!

四、问题修复

    // 使用此方式设置下滑线为了适配华为手机有双下划线
            spannableString = new SpannableString("当所有事件同时发生时:");
            UnderlineSpan underlineSpan = new UnderlineSpan();
            spannableString.setSpan(underlineSpan, 0, spannableString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
            binding.eventHintTv.setText(spannableString);

使用以上代码即可解决双下划线的问题 

 

 

点赞