ฉันต้องการขีดเส้นใต้ใต้TextView
ไฟล์. ฉันได้ค้นหาเนื้อหาบางส่วน แต่ไม่พบว่ามีประโยชน์อะไรเลย
ใครก็ได้โปรดช่วยฉันที่นี่?
ฉันต้องการขีดเส้นใต้ใต้TextView
ไฟล์. ฉันได้ค้นหาเนื้อหาบางส่วน แต่ไม่พบว่ามีประโยชน์อะไรเลย
ใครก็ได้โปรดช่วยฉันที่นี่?
คำตอบ:
มีสามวิธีในการขีดเส้นใต้ข้อความใน TextView
setPaintFlags (); ของ TextView
ให้ฉันอธิบายวิธีการทั้งหมด:
แนวทางที่ 1
สำหรับการขีดเส้นใต้ข้อความใน TextView คุณต้องใช้SpannableString
String udata="Underlined Text";
SpannableString content = new SpannableString(udata);
content.setSpan(new UnderlineSpan(), 0, udata.length(), 0);
mTextView.setText(content);
แนวทางที่ 2
คุณสามารถใช้เมธอดsetPaintFlagsของ TextView เพื่อขีดเส้นใต้ข้อความของ TextView
สำหรับเช่น
mTextView.setPaintFlags(mTextView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
mTextView.setText("This text will be underlined");
คุณสามารถอ้างถึงค่าคงที่ของคลาสPaint ได้หากคุณต้องการขีดฆ่าผ่านข้อความ
แนวทางที่ 3
ใช้ประโยชน์จาก Html.fromHtml(htmlString);
String htmlString="<u>This text will be underlined</u>";
mTextView.setText(Html.fromHtml(htmlString));
หรือ
txtView.setText(Html.fromHtml("<u>underlined</u> text"));
Html.fromHtml("<u>This text will be underlined</u>")
แต่ฉันต้องยอมรับว่าฉันเป็นแฟนตัวยงของการใช้ SpannableStrings @Kartik: คุณอาจใช้ a StrikethroughSpan
บนข้อความเพื่อสร้างเอฟเฟกต์ขีดทับ :)
เพียงล้อมรอบข้อความของคุณด้วยแท็ก <u> ในไฟล์ทรัพยากร string.xml ของคุณ
<string name="your_string"><u>Underlined text</u></string>
และในกิจกรรม / ส่วนของคุณ
mTextView.setText(R.string.your_string);
textView.setText(getString(R.string.text))
<- ผิด ขวา: หรือเพียงแค่textView.setText(getText(R.string.text))
textView.setText(R.string.text)
เหตุผล beind นี้ว่าgetText()
ผลตอบแทนSpannable
กับช่วงขีดเส้นใต้ แต่ถ้าคุณใช้getString()
มันจะแปลงSpannable
จะString
มีช่วงที่เกิดถูกลบออก
มันใช้ได้สำหรับฉัน
tv.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG);
สำหรับใครก็ตามที่ยังคงมองหาคำถามนี้ สิ่งนี้มีไว้สำหรับไฮเปอร์ลิงก์ แต่คุณสามารถแก้ไขได้เพียงแค่ขีดเส้นใต้ธรรมดา:
สร้าง drawable (hyperlink_underline.xml):
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="-10dp"
android:left="-10dp"
android:right="-10dp">
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
<stroke android:width="2dp"
android:color="#3498db"/>
</shape>
</item>
</layer-list>
สร้างรูปแบบใหม่:
<style name="Hyperlink">
<item name="android:textColor">#3498db</item>
<item name="android:background">@drawable/hyperlink_underline</item>
</style>
จากนั้นใช้สไตล์นี้กับ TextView ของคุณ:
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
local:MvxBind="Text Id; Click ShowJobInfoCommand"
style="@style/HyperLink"/>
หาก TextView ของคุณมีความกว้างคงที่ทางเลือกอื่นสามารถสร้าง View ซึ่งจะมีลักษณะเหมือนขีดเส้นใต้และวางตำแหน่งไว้ด้านล่าง TextView ของคุณ
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/myTextView"
android:layout_width="20dp"
android:layout_height="wrap_content"/>
<View
android:layout_width="20dp"
android:layout_height="1dp"
android:layout_below="@+id/myTextView"
android:background="#CCCCCC"/>
</RelativeLayout>
วิธีแก้ปัญหาที่ง่ายและยั่งยืนคือการสร้างรายการเลเยอร์และทำให้เป็นพื้นหลังของ TextView ของคุณ:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="-5dp"
android:right="-5dp"
android:top="-5dp">
<shape>
<stroke
android:width="1.5dp"
android:color="@color/colorAccent" />
</shape>
</item>
</layer-list>
5 วิธีที่น่าทึ่งในการขีดเส้นใต้ TextView ใน Android - Kotlin / Java & XML
String html = "<u>Underline using Html.fromHtml()</u>";
textview.setText(Html.fromHtml(html));
แต่Html.fromHtml (ทรัพยากรสตริง)เลิกใช้งานแล้วใน API 24
เพื่อให้คุณสามารถใช้ห้องสมุดสนับสนุนล่าสุด Android androidx.core.text.HtmlCompat ก่อนหน้านั้นคุณต้องรวมการพึ่งพาในโครงการของคุณ
`implementation 'androidx.core:core:1.0.1'`
String html = "<u> 1.1 Underline using HtmlCompat.fromHtml()</u>";
//underline textview using HtmlCompat.fromHtml() method
textview11.setText(HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY));
ใช้ strings.xml ,
<string name="underline_text">1.3 <u>Underline using HtmlCompat.fromHtml() and string resource</u></string>
textview13.setText(HtmlCompat.fromHtml(getString(R.string.underline_text), HtmlCompat.FROM_HTML_MODE_LEGACY));
โดยใช้ PaintFlags
textview2.setPaintFlags(textview2.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
textview2.setText("2. Underline using setPaintFlags()");
โดยใช้ SpannableString
`String content1 = "3.1 Underline using SpannableString";
SpannableString spannableString1 = new SpannableString(content1);
spannableString1.setSpan(new UnderlineSpan(), 0, content1.length(), 0);
textview31.setText(spannableString1);`