Android में TextView के नीचे एक अंडरलाइन आकर्षित करने के लिए


118

मैं अपने नीचे की रेखा खींचना चाहता हूं TextView । मैंने कुछ सामग्री खोजी है, लेकिन कुछ भी फलदायी नहीं पाया।

किसी को भी कृपया मेरी मदद कर सकते हैं यहाँ?


जवाबों:


323

TextView में टेक्स्ट को अंडरलाइन करने के तीन तरीके हैं।

  1. SpannableString

  2. setPaintFlags (); पाठ का दृश्य

  3. Html.fromHtml ();

मैं आपको सभी दृष्टिकोण समझाता हूं:

1 दृष्टिकोण

TextView में पाठ को रेखांकित करने के लिए आपको SpannableString का उपयोग करना होगा

String udata="Underlined Text";
SpannableString content = new SpannableString(udata);
content.setSpan(new UnderlineSpan(), 0, udata.length(), 0);
mTextView.setText(content);

दूसरा दृष्टिकोण

आप TextView के पाठ को रेखांकित करने के लिए TextView के setPaintFlags विधि का उपयोग कर सकते हैं ।

उदाहरण के लिए।

mTextView.setPaintFlags(mTextView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
mTextView.setText("This text will be underlined");

यदि आप पाठ के माध्यम से हड़ताल करना चाहते हैं तो आप पेंट वर्ग के स्थिरांक का उल्लेख कर सकते हैं ।

तीसरा दृष्टिकोण

उपयोग करना 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
यह सुनकर खुशी हुई। इस प्रश्न को हल करें क्योंकि अन्य उपयोगकर्ता इसे संदर्भित कर सकते हैं।
कार्तिक डोमडिया

4
एक तीसरे दृष्टिकोण का उपयोग किया जाएगा Html.fromHtml("<u>This text will be underlined</u>"), लेकिन मुझे स्वीकार करना होगा कि मैं स्पैनएबलस्ट्रेस का उपयोग करने का बहुत बड़ा प्रशंसक हूं। @ कार्तिक: आप StrikethroughSpanस्ट्राइकथ्रू प्रभाव बनाने के लिए पाठ पर उपयोग कर सकते हैं। :)
एमएच।

तीसरा दृष्टिकोण प्यार। लघु, सरल और संक्षिप्त और मेरे कार्यक्रम में कोड की सिर्फ एक अतिरिक्त पंक्ति जोड़ता है।
मैट

मुझे पता है कि यह थोड़े पुराना है, लेकिन क्या अंडरलाइन की मोटाई निर्धारित करने का कोई तरीका है?
एंड्रियास वोंग

वरीयताएँ सामग्री के लिए, वरीयता सूची में किसका उपयोग किया जाता है?
एंड्रॉयड डेवलपर

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()यह परिवर्तित कर देंगे Spannableकरने के लिए Stringजिसके परिणामस्वरूप फैला हटाया जा रहा।
यारोस्लाव मायटक्लाइक

अच्छी बात! मैंने अपने वर्तमान उत्तर को और अधिक स्पष्ट करने के लिए संपादित किया है
18

19

मेरे लिए इसका काम करता है।

tv.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG);

11

किसी के लिए भी अभी भी इस querstion को देख रहा है। यह हाइपरलिंक के लिए है, लेकिन आप इसे केवल एक सादे रेखा के लिए संशोधित कर सकते हैं:

एक ड्रा करने योग्य (हाइपरलिंक_उंडरलाइन। 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

एक सरल और स्थायी समाधान एक परत-सूची बनाना और इसे आपके टेक्स्ट व्यू की पृष्ठभूमि के रूप में बनाना है:

<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
अगर यह सिंगल लाइन
टेक्स्टव्यू

0

एंड्रॉइड में एक टेक्स्टव्यू को रेखांकित करें

5 अद्भुत तरीके Android में एक TextView को रेखांकित करने के लिए - Kotlin / Java और XML

  1. String html = "<u>Underline using Html.fromHtml()</u>"; textview.setText(Html.fromHtml(html));

लेकिन Html.fromHtml (स्ट्रिंग संसाधन) एपीआई 24 में को हटा दिया गया था।

तो आप नवीनतम एंड्रॉइड सपोर्ट लाइब्रेरी androidx.core.text.tmlCompat का उपयोग कर सकते हैं । इससे पहले, आपको अपनी परियोजना में निर्भरता को शामिल करने की आवश्यकता है।

`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));

स्ट्रिंग्स का उपयोग करना। 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));

पेंटफ्लैग्स का उपयोग करना

  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);`
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.