Android에서 TextView 아래에 밑줄을 그리려면


답변:


323

TextView에서 텍스트에 밑줄을 긋는 세 가지 방법이 있습니다.

  1. SpannableString

  2. setPaintFlags (); TextView의

  3. Html.fromHtml ();

모든 접근 방식을 설명하겠습니다.

첫 번째 접근

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 클래스의 상수를 참조 할 수 있습니다 .

세 번째 접근

활용 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"));

1
다른 사용자가 참조 할 수 있도록이 질문을 해결됨으로 표시하세요.
Kartik Domadiya 2011

4
세 번째 접근 방식 Html.fromHtml("<u>This text will be underlined</u>")은를 사용하는 것이지만, 저는 SpannableStrings를 사용하는 것을 훨씬 더 좋아한다는 것을 인정해야합니다. @Kartik : StrikethroughSpan텍스트에를 사용하여 취소 선 효과를 만들 수도 있습니다 . :)
MH.

세 번째 접근 방식을 좋아하십시오. 짧고 간단하며 간결하며 프로그램에 코드 한 줄만 추가합니다.
Matt

나는 이것이 다소 오래된 것을 알고 있지만 밑줄의 두께를 설정하는 방법이 있습니까?
Andreas Wong

그들 중 PreferenceCategory에서 preferenceActivity 콘텐츠에 사용되는 것은 무엇입니까?
안드로이드 개발자 '

40

string.xml 리소스 파일에서 텍스트를 <u> 태그로 묶으십시오.

<string name="your_string"><u>Underlined text</u></string>

그리고 당신의 활동 / 조각에서

mTextView.setText(R.string.your_string);

7
@CHAKRAVARTHI 설정하기 전에 텍스트를 문자열로 캐스팅하면 작동하지 않습니다. 예 : textView.setText(getString(R.string.text)) <-틀린 . 오른쪽 : textView.setText(getText(R.string.text)) 또는 그냥 textView.setText(R.string.text). 그 이유는이 beind getText()반환 Spannable당신이 사용하는 경우 밑줄 경간,하지만 getString()그것은 변환됩니다 SpannableString결과 스팬 제거된다.
Yaroslav Mytkalyk 2014

좋은 지적! 더 명확하게하기 위해 현재 답변을 편집했습니다.
Sarpe

19

나를 위해 작동합니다.

tv.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG);

11

아직이 질문을보고있는 사람을 위해. 이것은 하이퍼 링크 용이지만 일반 밑줄로만 수정할 수 있습니다.

드로어 블 (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"/>

3

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>

2

간단하고 지속 가능한 솔루션은 레이어 목록을 만들고이를 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>

2
이것이 한 줄 textview 인 경우 최선의 선택입니다
hushed_voice

0

안드로이드에서 텍스트 뷰에 밑줄을 긋다

Android에서 TextView에 밑줄을 긋는 5 가지 놀라운 방법-Kotlin / Java & XML

  1. 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'`
  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 사용 ,

  1. <string name="underline_text">1.3 &lt;u>Underline using HtmlCompat.fromHtml() and string resource&lt;/u></string>

textview13.setText(HtmlCompat.fromHtml(getString(R.string.underline_text), HtmlCompat.FROM_HTML_MODE_LEGACY));

PaintFlags 사용

  1. 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);`
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.