অ্যান্ড্রয়েডে টেক্সটভিউয়ের নীচে একটি আন্ডারলাইন আঁকতে


118

আমি আমার নীচের আন্ডারলাইন আঁকতে চাই TextView। আমি কয়েকটি সামগ্রী অনুসন্ধান করেছি তবে ফলপ্রসূ কিছু খুঁজে পেলাম না।

কেউ কি আমাকে এখানে সাহায্য করতে পারেন?


উত্তর:


323

টেক্সটভিউতে পাঠ্যটিকে আন্ডারলাইং করার জন্য তিনটি উপায় রয়েছে।

  1. SpannableString

  2. setPaintFlags (); টেক্সটভিউ এর

  3. Html.fromHtml ();

আমাকে আপনার সমস্ত পদ্ধতির ব্যাখ্যা করতে দিন:

1 ম পন্থা

টেক্সটভিউতে পাঠ্যকে আন্ডারলাইনের জন্য আপনাকে স্প্যানিয়েবল স্ট্রিং ব্যবহার করতে হবে

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

2 য় পন্থা

টেক্সটভিউয়ের পাঠ্যটি আন্ডারলাইন করতে আপনি টেক্সটভিউয়ের সেটপেইন্টফ্ল্যাজ পদ্ধতি ব্যবহার করতে পারেন ।

যেমন যেমন

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

আপনি যদি লেখার মাধ্যমে স্ট্রাইক করতে চান তবে আপনি পেইন্ট শ্রেণীর ধ্রুবকগুলি উল্লেখ করতে পারেন।

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

1
শুনে খুশি হলেন .. এই প্রশ্নটিকে সমাধান হিসাবে চিহ্নিত করুন যাতে অন্যান্য ব্যবহারকারীরা এটি উল্লেখ করতে পারে।
কার্তিক দোমদিয়া

4
তৃতীয় পদ্ধতিটি ব্যবহার করা হবে Html.fromHtml("<u>This text will be underlined</u>"), তবে আমি স্বীকার করতে হবে আমি স্প্যানিয়েবল স্ট্রিংস ব্যবহারের অনেক বেশি অনুরাগী। @ কার্তিক: StrikethroughSpanস্ট্রাইকথ্রু ইফেক্ট তৈরি করতে আপনি পাঠ্যে একটি ব্যবহার করতে পারেন। :)
এমএইচ।

3 য় পন্থা পছন্দ। সংক্ষিপ্ত, সহজ এবং সংক্ষিপ্ত এবং আমার প্রোগ্রামে কোডের একটি অতিরিক্ত লাইন যুক্ত করে।
ম্যাট

আমি জানি এটি বেশ পুরানো, তবে আন্ডারলাইনটির বেধ সেট করার কোনও উপায় আছে কি?
Andreas Wong

এর মধ্যে কোনটি পছন্দসই বিষয়বস্তুর জন্য ব্যবহৃত হয়, পছন্দশ্রেণীর বিভাগে?
অ্যান্ড্রয়েড বিকাশকারী

40

আপনার স্ট্রিং.এক্সএমএল রিসোর্স ফাইলটিতে <u> ট্যাগ দিয়ে কেবল আপনার পাঠ্যকে ঘিরে

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

এবং আপনার ক্রিয়াকলাপ / খণ্ডে

mTextView.setText(R.string.your_string);

7
@ চক্রবর্তীটি আপনি সেটিংসের আগে পাঠ্যটি স্ট্রিংয়ে কাস্ট করেন তবে এটি কাজ করবে না। যেমন textView.setText(getString(R.string.text)) <- ভুলডান: textView.setText(getText(R.string.text)) বা ঠিক textView.setText(R.string.text)। কারণ এই beind যে getText()আয় Spannableনিম্নরেখা ধারন সঙ্গে, কিন্তু যদি আপনি ব্যবহার getString()এটা রূপান্তর করবে Spannableকরার Stringফলে ধারন সরানো হচ্ছে।
ইয়ারোস্লাভ মেটকালিক

ভাল যুক্তি! আমি আরও স্পষ্ট হওয়ার জন্য আমার বর্তমান উত্তরটি সম্পাদনা করেছি
সার্পে

19

এটি আমার পক্ষে কাজ করে।

tv.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG);

11

যে কারও জন্য এখনও এই অনুসন্ধানের দিকে তাকিয়ে আছে। এটি একটি হাইপারলিংকের জন্য তবে আপনি এটি কেবল একটি সরল আন্ডারলাইনের জন্য সংশোধন করতে পারেন:

একটি অঙ্কনযোগ্য (হাইপারলিঙ্ক_উন্ডারলাইন.এক্সএমএল) তৈরি করুন:

<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
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    local:MvxBind="Text Id; Click ShowJobInfoCommand"
    style="@style/HyperLink"/>

3

যদি আপনার টেক্সটভিউয়ের নির্দিষ্ট প্রস্থ রয়েছে, বিকল্প সমাধানটি এমন একটি ভিউ তৈরি করা যেতে পারে যা একটি আন্ডারলাইন হিসাবে দেখায় এবং এটি আপনার টেক্সটভিউয়ের ঠিক নীচে রাখে।

<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
এটি সর্বোত্তম পছন্দ যদি এটি একটি একক লাইনের পাঠ্যদর্শন হয়
3x_voice

0

অ্যান্ড্রয়েডে একটি পাঠ্যদর্শনকে আন্ডারলাইন করুন

অ্যান্ড্রয়েডে টেক্সটভিউ আন্ডারলাইনের 5 টি আশ্চর্যজনক উপায় - কোটলিন / জাভা এবং এক্সএমএল

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

তবে এইচটিএমএল.ফর্মএইচটিএমএল (স্ট্রিং রিসোর্স) এপিআই 24 এ অবমূল্যায়ন করা হয়েছিল।

সুতরাং আপনি সর্বশেষতম অ্যান্ড্রয়েড সমর্থন লাইব্রেরি 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));

স্ট্রিং.এক্সএমএল ব্যবহার করে ,

  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()");

স্প্যানিয়েবল স্ট্রিং ব্যবহার করে

`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.