一、问题描述
在华为机型荣耀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);
使用以上代码即可解决双下划线的问题