Alt çizgiyi altıma çizmek istiyorum TextView. Birkaç içerik aradım ancak verimli bir şey bulamadım.
Lütfen kimse bana yardım edebilir mi?
Alt çizgiyi altıma çizmek istiyorum TextView. Birkaç içerik aradım ancak verimli bir şey bulamadım.
Lütfen kimse bana yardım edebilir mi?
Yanıtlar:
TextView'da metnin altını çizmenin üç yolu vardır.
Size tüm yaklaşımları açıklayayım:
1. Yaklaşım
TextView'daki metnin altını çizmek için SpannableString kullanmanız gerekir
String udata="Underlined Text";
SpannableString content = new SpannableString(udata);
content.setSpan(new UnderlineSpan(), 0, udata.length(), 0);
mTextView.setText(content);
2. Yaklaşım
TextView metninin altını çizmek için TextView'in setPaintFlags yöntemini kullanabilirsiniz .
Örneğin.
mTextView.setPaintFlags(mTextView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
mTextView.setText("This text will be underlined");
Metnin üstünü çizmek istiyorsanız , Paint sınıfının sabitlerine başvurabilirsiniz .
3. Yaklaşım
Faydalanmak Html.fromHtml(htmlString);
String htmlString="<u>This text will be underlined</u>";
mTextView.setText(Html.fromHtml(htmlString));
VEYA
txtView.setText(Html.fromHtml("<u>underlined</u> text"));
Html.fromHtml("<u>This text will be underlined</u>"), ancak SpannableStrings'i kullanmanın çok daha büyük bir hayranı olduğumu itiraf etmeliyim. @Kartik: Üstü StrikethroughSpançizili efekt yaratmak için metinde a kullanabilirsiniz . :)
string.xml kaynak dosyanızda metninizi <u> etiketiyle çevreleyin
<string name="your_string"><u>Underlined text</u></string>
ve Aktivitenizde / Parçanızda
mTextView.setText(R.string.your_string);
textView.setText(getString(R.string.text)) <- yanlış . Doğru: textView.setText(getText(R.string.text)) veya sadece textView.setText(R.string.text). Bunun nedeni , altı çizili yayılma aralıklarıyla getText()geri dönen Spannable, ancak kullanırsanız , sonuçta ortaya çıkan yayılma alanlarını kaldırmaya getString()dönüştürecektir . SpannableString
Hala bu soruya bakan herkes için. Bu bir köprü içindir, ancak basit bir alt çizgi için onu değiştirebilirsiniz:
Bir çekilebilir (hyperlink_underline.xml) oluşturun:
<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>
Yeni bir stil yaratın:
<style name="Hyperlink">
<item name="android:textColor">#3498db</item>
<item name="android:background">@drawable/hyperlink_underline</item>
</style>
Ardından bu stili TextView'unuzda kullanın:
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
local:MvxBind="Text Id; Click ShowJobInfoCommand"
style="@style/HyperLink"/>
TextView'iniz sabit genişliğe sahipse, alternatif çözüm, altı çizili gibi görünen bir Görünüm oluşturmak ve onu TextView'unuzun hemen altına yerleştirmek olabilir.
<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>
Basit ve sürdürülebilir bir çözüm, bir katman listesi oluşturmak ve bunu TextView'unuzun arka planı yapmaktır:
<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>
Android'de Bir TextView Altını Çizmenin 5 Harika Yolu - Kotlin / Java ve XML
String html = "<u>Underline using Html.fromHtml()</u>";
textview.setText(Html.fromHtml(html));Ancak Html.fromHtml (Dize kaynağı) , API 24'te kullanımdan kaldırıldı.
Böylece en son android destek kitaplığını androidx.core.text.HtmlCompat'ı kullanabilirsiniz . Bundan önce, projenize bağımlılığı dahil etmeniz gerekir.
`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 kullanarak ,
<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 kullanarak
textview2.setPaintFlags(textview2.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
textview2.setText("2. Underline using setPaintFlags()");SpannableString kullanarak
`String content1 = "3.1 Underline using SpannableString";
SpannableString spannableString1 = new SpannableString(content1);
spannableString1.setSpan(new UnderlineSpan(), 0, content1.length(), 0);
textview31.setText(spannableString1);`