2

I am trying to make a text view underlined in my Custom Dialog.

MY XML:

         <TextView
            android:id="@+id/tv_terms_policies"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/terms_and_policies"           

            />

Methods which I have tried already:

Method 1.

    tvTerms=(TextView) findViewById(R.id.tv_terms_policies);
    String data="TERMS AND POLICIES";
    SpannableString content = new SpannableString(data);
    content.setSpan(new UnderlineSpan(), 0, data.length(), 0);
    tvTerms.setText(content);

Method 2.

    <string name="terms_plans"><u>TERMS AND POLICIES</u></string>

Method:3

    tvTerms=(TextView) findViewById(R.id.tv_terms_policies);
    String htmlString="<u>TERMS AND POLICIES</u>";
    tvTerms.setText(Html.fromHtml(htmlString));

unfortunatly these three methods are not working for me. Please suggest any other methods.. thnx in advnz :)

Praanthan
  • 31
  • 1
  • 4

5 Answers5

10

This works for me:

<resources>
    <string name="your_string"><u>underline</u></string>
</resources>

Output:

enter image description here

ManmeetP
  • 801
  • 7
  • 17
5

In yout string.xml

<string name="terms_plans"><u>TERMS AND POLICIES</u></string>

and than use in your xml

<TextView
android:id="@+id/tv_terms_policies"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/terms_plans"           
/>

I hope it work.

Payal Sorathiya
  • 756
  • 1
  • 8
  • 23
3

You can use View for drawing a underline

          <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <TextView
                    android:id="@+id/tv_terms_policies"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/terms_and_policies"
                    android:textColor="#ffff00"
                    android:textSize="20sp" />

                <View
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:background="#fff000" />
            </LinearLayout>
Upendra Shah
  • 2,218
  • 17
  • 27
2

can you use clickablespan like,

     ClickableSpan privacyPolicyClick = new ClickableSpan() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(LoginInstagramActivity.this,WebViewForPrivacyPolicyActivity.class));
            }
        };

        makeLinks(mBinding.tvPrivacyPolicy, new String[] { "Privacy Policy" }, new ClickableSpan[] {
                privacyPolicyClick
        }); //makeLinks method for selected under line area...

//this method for link generation

  public void makeLinks(TextView textView, String[] links, ClickableSpan[] clickableSpans) {
        SpannableString spannableString = new SpannableString(textView.getText());
        for (int i = 0; i < links.length; i++) {
            ClickableSpan clickableSpan = clickableSpans[i];
            String link = links[i];

            int startIndexOfLink = textView.getText().toString().indexOf(link);
            spannableString.setSpan(clickableSpan, startIndexOfLink, startIndexOfLink + link.length(),
                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
        textView.setMovementMethod(LinkMovementMethod.getInstance());
        textView.setText(spannableString, TextView.BufferType.SPANNABLE);
    }
Goku
  • 9,102
  • 8
  • 50
  • 81
0

You can add a separate view below your text view, enclose both of them in a linear or relative layout & set the width of the enclosing view to the width of the textview.