TextView
の下に下線を引きたい。いくつかのコンテンツを検索しましたが、実りあるものは見つかりませんでした。
誰でもここで私を助けてくれますか?
TextViewでテキストを理解するには、3つの方法があります。
すべてのアプローチを説明しましょう。
最初のアプローチ
TextViewのテキストを基にするには、 SpannableString を使用する必要があります
String udata="Underlined Text";
SpannableString content = new SpannableString(udata);
content.setSpan(new UnderlineSpan(), 0, udata.length(), 0);
mTextView.setText(content);
第2のアプローチ
TextViewの setPaintFlags メソッドを使用して、TextViewのテキストに下線を引くことができます。
例えば.
mTextView.setPaintFlags(mTextView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
mTextView.setText("This text will be underlined");
テキストを打つ場合は、 Paint classの定数を参照できます。
第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"));
string.xmlリソースファイルで<u>タグでテキストを囲むだけです
<string name="your_string"><u>Underlined text</u></string>
そしてあなたのアクティビティ/フラグメントで
mTextView.setText(R.string.your_string);
その作品。
tv.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG);
この疑問をまだ見ている人のために。これはハイパーリンク用ですが、単純な下線用に変更できます。
ドロアブル(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"/>
AndroidでTextViewに下線を引く5つのすばらしい方法-Kotlin/Java&XML
String html = "<u>Underline using Html.fromHtml()</u>"; textview.setText(Html.fromHtml(html));
ただし、Html.fromHtml(String resource)は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);`
シンプルで持続可能なソリューションは、レイヤーリストを作成し、それを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>
TextViewの幅が固定されている場合、別の解決策は、下線のように見えるビューを作成し、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>