Tôi muốn vẽ gạch chân bên dưới của tôi TextView
. Tôi đã tìm kiếm một số nội dung nhưng không thể tìm thấy bất cứ điều gì hiệu quả.
Bất cứ ai có thể vui lòng giúp tôi ở đây?
Tôi muốn vẽ gạch chân bên dưới của tôi TextView
. Tôi đã tìm kiếm một số nội dung nhưng không thể tìm thấy bất cứ điều gì hiệu quả.
Bất cứ ai có thể vui lòng giúp tôi ở đây?
Câu trả lời:
Có ba cách để gạch dưới văn bản trong TextView.
setPaintFlags (); của TextView
Hãy để tôi giải thích cho bạn tất cả các cách tiếp cận:
Cách tiếp cận đầu tiên
Để gạch dưới văn bản trong TextView, bạn phải sử dụng SpannableString
String udata="Underlined Text";
SpannableString content = new SpannableString(udata);
content.setSpan(new UnderlineSpan(), 0, udata.length(), 0);
mTextView.setText(content);
Cách tiếp cận thứ 2
Bạn có thể sử dụng phương thức setPaintFlags của TextView để gạch dưới văn bản của TextView.
Ví dụ.
mTextView.setPaintFlags(mTextView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
mTextView.setText("This text will be underlined");
Bạn có thể tham khảo các hằng số của lớp Paint nếu bạn muốn đánh ngang qua văn bản.
Cách tiếp cận thứ 3
Tận dụng Html.fromHtml(htmlString);
String htmlString="<u>This text will be underlined</u>";
mTextView.setText(Html.fromHtml(htmlString));
HOẶC LÀ
txtView.setText(Html.fromHtml("<u>underlined</u> text"));
Html.fromHtml("<u>This text will be underlined</u>")
, nhưng tôi phải thừa nhận rằng tôi là một fan hâm mộ lớn hơn nhiều của việc sử dụng SpannableStrings. @Kartik: Bạn cũng có thể sử dụng một StrikethroughSpan
trên văn bản để tạo hiệu ứng gạch ngang. :)
chỉ cần bao quanh văn bản của bạn bằng thẻ <u> trong tệp tài nguyên string.xml của bạn
<string name="your_string"><u>Underlined text</u></string>
và trong Hoạt động / Phân đoạn của bạn
mTextView.setText(R.string.your_string);
textView.setText(getString(R.string.text))
<- sai . Đúng: textView.setText(getText(R.string.text))
hoặc chỉ textView.setText(R.string.text)
. Lý do beind này mà getText()
lợi nhuận Spannable
với nhịp gạch dưới, nhưng nếu bạn sử dụng getString()
nó sẽ chuyển đổi Spannable
để String
dẫn đến nhịp bị xóa.
Đối với bất cứ ai vẫn nhìn vào câu hỏi này. Đây là một siêu liên kết nhưng bạn có thể sửa đổi nó chỉ với một gạch dưới đơn giản:
Tạo một 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>
Tạo một phong cách mới:
<style name="Hyperlink">
<item name="android:textColor">#3498db</item>
<item name="android:background">@drawable/hyperlink_underline</item>
</style>
Sau đó, sử dụng kiểu này trên TextView của bạn:
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
local:MvxBind="Text Id; Click ShowJobInfoCommand"
style="@style/HyperLink"/>
Nếu TextView của bạn có chiều rộng cố định, giải pháp thay thế có thể là tạo một View trông giống như một gạch dưới và đặt nó ngay bên dưới TextView của bạn.
<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>
Một giải pháp đơn giản và bền vững là tạo danh sách lớp và đặt nó làm nền cho TextView của bạn:
<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 cách tuyệt vời để gạch dưới một TextView trong Android - Kotlin / Java & XML
String html = "<u>Underline using Html.fromHtml()</u>";
textview.setText(Html.fromHtml(html));
Nhưng Html.fromHtml (Tài nguyên chuỗi) không được chấp nhận trong API 24.
Vì vậy, bạn có thể sử dụng thư viện hỗ trợ android mới nhất androidx.core.text.HtmlCompat . Trước đó, bạn cần đưa sự phụ thuộc vào dự án của mình.
`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));
Sử dụng string.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));
sử dụng PaintFlags
textview2.setPaintFlags(textview2.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
textview2.setText("2. Underline using setPaintFlags()");
sử dụng SpannableString
`String content1 = "3.1 Underline using SpannableString";
SpannableString spannableString1 = new SpannableString(content1);
spannableString1.setSpan(new UnderlineSpan(), 0, content1.length(), 0);
textview31.setText(spannableString1);`