一、問題描述
在華爲機型榮耀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);
使用以上代碼即可解決雙下劃線的問題