আপনি কীভাবে অ্যান্ড্রয়েড এক্সএমএলে কোনও পাঠ্যকে আন্ডারলাইন করবেন?


108

আপনি কীভাবে কোনও এক্সএমএল ফাইলটিতে একটি পাঠ্যকে আন্ডারলাইন করবেন? আমি কোনও বিকল্প খুঁজে পাচ্ছি না textStyle


আপনি style="text-decoration: underline;"
ρяσѕρєя কে

1
আপনি কীভাবে এটি ব্যবহার করতে পারবেন?
মাইকেল জিউনার 20

আপনি এটি ব্যবহার করে textView.setText(Html.fromHtml("<u>"+"testest"+"</u>"));
দেখেছেন

উত্তর:


174

আপনি যদি একটি স্ট্রিং উৎসের XML ফাইল (সমর্থন এইচটিএমএল ট্যাগ) ব্যবহার করে থাকেন, এটি ব্যবহার করা যেতে পারে <b> </b>, <i> </i>এবং <u> </u>

<resources>
    <string name="your_string_here">
        This is an <u>underline</u>.
    </string>
</resources>

আপনি যদি কোড ব্যবহার থেকে কিছু আন্ডারলাইন করতে চান:

TextView tv = (TextView) view.findViewById(R.id.tv);
SpannableString content = new SpannableString("Content");
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
tv.setText(content);

আশাকরি এটা সাহায্য করবে


9
আমি এই চেষ্টা করেছিলাম। স্ট্রিং আন্ডারলাইন আপ করা হয় না?
মাইকেল জিউনার 20

5
আমি <u>ট্যাগগুলির মাধ্যমে অন্তর্নিহিত কাজ না করে এমন কেসগুলি দেখতে পেয়েছি , যেমন কখনও কখনও আপনি যদি কাস্টম ফন্ট ব্যবহার করেন are যাইহোক, অন্তর্নিহিত প্রোগ্রামমেটিক্যালি UnderlineSpanসত্যই আমার উপর কখনই ব্যর্থ হয় নি, তাই আমি এটি সবচেয়ে নির্ভরযোগ্য সমাধান হিসাবে সুপারিশ করব।
জিউলিও পিয়ানোস্টেলি

আপনার জাভাতে পাঠ্য সেট করার দরকার নেই। এক্সএমএল ব্যবহার করুন <u>এবং <\u>এটি যথেষ্ট।
মাকসিম দিমিত্রিভ

9
আমার ক্ষেত্রে, অ্যান্ড্রয়েড স্টুডিও পূর্বরূপটি এইচটিএমএল ট্যাগ নির্ধারণ করতে সক্ষম হয়নি। তবে একবার আমি প্রকল্পটি বাস্তব ডিভাইসে চালিত করে আন্ডারলাইন করা পাঠ্যটি আনন্দের সাথে দেখানো হয়েছিল।
অ্যালভিন

1
<সাদা> আপনি যে স্ট্রিংটি এইচটিএমএল রূপান্তর করতে হবে যখন গুগল ইতিমধ্যে আমাদের
গা us়

57

এটা ব্যবহার কর:

TextView txt = (TextView) findViewById(R.id.Textview1);
txt.setPaintFlags(txt.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);

সচেতন হন যে এই সমাধানটি সর্বদা পুরো পাঠ্যকে আন্ডারলাইন করে, তাই যদি কেউ এর কেবলমাত্র একটি অংশকে আন্ডারলাইন করতে চায় তবে এটি সম্ভব নয়। তার জন্য, আপনার দরকার UnderlineSpan
জিউলিও পিয়ানোস্টেলি

25
<resource>
    <string name="your_string_here">This is an <u>underline</u>.</string>
</resources>

যদি কাজ না হয়

<resource>
<string name="your_string_here">This is an &lt;u>underline&lt;/u>.</string>

কারণ "<" কোনও সময় একটি কীওয়ার্ড হতে পারে।

এবং প্রদর্শনের জন্য

TextView textView = (TextView) view.findViewById(R.id.textview);
textView.setText(Html.fromHtml(getString(R.string.your_string_here)));

3
এটি কাজ করে ... তবে যদি কোনও কারণে আপনি xML অ্যাট্রিবিউট অ্যান্ড্রয়েড ব্যবহার করতে টেক্সটভিউ সেট করেন: টেক্সটএলক্যাপস = "সত্য", আন্ডারলাইনটি প্রদর্শিত হবে না। এই সংশোধকটি সরান এবং আন্ডারলাইনটি যেমন ইচ্ছা তে প্রদর্শিত হবে। সবেমাত্র মাথা উঁচু করে :)
ম্যাট ডাব্লু

5

প্রথমত, স্ট্রিং.এক্সএমএল ফাইলটিতে যান

আপনি এখানে কোনও HTML বৈশিষ্ট্য, ইটালিক বা সাহসী বা আন্ডারলাইন যুক্ত করতে পারেন।

    <resources>
        <string name="your_string_here">This is an <u>underline</u>.</string>
    </resources>

3

এটি করার আরেকটি উপায় হ'ল টেক্সটভিউ প্রসারিত একটি কাস্টম উপাদান তৈরি করছে। এটি আপনার ক্ষেত্রে একাধিক আন্ডারলাইনযুক্ত টেক্সটভিউ থাকা দরকার।

উপাদানটির কোড এখানে:

package com.myapp.components;

import android.content.Context;
import android.support.v7.widget.AppCompatTextView;
import android.text.SpannableString;
import android.text.style.UnderlineSpan;
import android.util.AttributeSet;

public class LinkTextView extends AppCompatTextView {
    public LinkTextView(Context context) {
        this(context, null);
    }

    public LinkTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void setText(CharSequence text, BufferType type) {
        SpannableString content = new SpannableString(text);
        content.setSpan(new UnderlineSpan(), 0, content.length(), 0);

        super.setText(content, type);
    }
}

এবং এটি কীভাবে এক্সএমএল ব্যবহার করবেন:

<com.myapp.components.LinkTextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Hello World!" />

2

ভাবীনের উত্তর সম্পূর্ণ করতে। উদাহরণস্বরূপ, আন্ডারলাইন বা পুনঃনির্দেশ যুক্ত করতে।

((TextView) findViewById(R.id.tv_cgu)).setText(Html.fromHtml(getString(R.string.upload_poi_CGU)));

<string name="upload_poi_CGU"><![CDATA[ J\'accepte les <a href="">conditions générales</a>]]></string>

এবং আপনি সামঞ্জস্যপূর্ণ ট্যাগ এখানে জানতে পারেন: http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html


2

আপনি নীচের মার্কআপ ব্যবহার করতে পারেন, তবে মনে রাখবেন যে আপনি যদি সেট করে textAllCapsথাকেন trueতবে আন্ডারলাইন প্রভাবটি সরানো হবে।

<resource>
    <string name="my_string_value">I am <u>underlined</u>.</string>
</resources>


বিঃদ্রঃ

স্ট্রিং (লগইন_চেঞ্জ_সেটিংস) সহ টেক্সটআলক্যাপস ব্যবহার করা যা মার্কআপ রয়েছে; ক্যাপ রূপান্তর দ্বারা মার্কআপ বাদ দেওয়া হবে

টেক্সটএলক্যাপস টেক্সট ট্রান্সফর্মটি চারসেকেন্সে টু স্ট্রিং কলিংয়ের সমাপ্ত হবে, যার কোনও মার্কআপ যেমন মুছে ফেলার নেট প্রভাব রয়েছে। এই চেকটি মার্কআপযুক্ত স্ট্রিংয়ের ব্যবহারগুলির জন্য অনুসন্ধান করে যা টেক্সটএলক্যাপস = সত্যও নির্দিষ্ট করে।


2

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

1. <u>This is my underlined text</u> বা

I just want to underline <u>this</u> word

২.আপনি একই প্রোগ্রাম করে দেখতে পারেন।

`textView.setPaintFlags(textView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);`

৩. এটি একটি স্প্যানিয়েবল স্ট্রিং তৈরি করে টেক্সটভিউ পাঠ্য সম্পত্তি হিসাবে সেট করে করা যায়

SpannableString text = new SpannableString("Voglio sottolineare solo questa parola");
text.setSpan(new UnderlineSpan(), 25, 6, 0);
textView.setText(text);

2

আমি নীচের পদ্ধতিটি ব্যবহার করেছি, এটি আমার পক্ষে কাজ করেছিল। নীচে বোতামের উদাহরণ রয়েছে তবে আমরা টেক্সটভিউতেও ব্যবহার করতে পারি।

Button btnClickMe = (Button) findViewById(R.id.btn_click_me);
btnClickMe.setPaintFlags(btnClickMe.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);

1

আপনি যদি পাঠ্যের স্ট্রিংয়ের তুলনা করতে চান বা পাঠ্যটি গতিশীলভাবে পরিবর্তিত হবে তবে আপনি সীমাবদ্ধ বিন্যাসে একটি ভিউ তৈরি করতে পারেন এটি পাঠ্যের দৈর্ঘ্য অনুসারে সামঞ্জস্য করবে

 <android.support.constraint.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/txt_Previous"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:layout_marginBottom="8dp"
        android:gravity="center"
        android:text="Last Month Rankings"
        android:textColor="@color/colorBlue"
        android:textSize="15sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <View
        android:layout_width="0dp"
        android:layout_height="0.7dp"
        android:background="@color/colorBlue"
        app:layout_constraintEnd_toEndOf="@+id/txt_Previous"
        app:layout_constraintStart_toStartOf="@+id/txt_Previous"
        app:layout_constraintBottom_toBottomOf="@id/txt_Previous"/>


</android.support.constraint.ConstraintLayout>

0
public void setUnderLineText(TextView tv, String textToUnderLine) {
        String tvt = tv.getText().toString();
        int ofe = tvt.indexOf(textToUnderLine, 0);

        UnderlineSpan underlineSpan = new UnderlineSpan();
        SpannableString wordToSpan = new SpannableString(tv.getText());
        for (int ofs = 0; ofs < tvt.length() && ofe != -1; ofs = ofe + 1) {
            ofe = tvt.indexOf(textToUnderLine, ofs);
            if (ofe == -1)
                break;
            else {
                wordToSpan.setSpan(underlineSpan, ofe, ofe + textToUnderLine.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
                tv.setText(wordToSpan, TextView.BufferType.SPANNABLE);
            }
        }
    }

সর্বাধিক সহজ উপায়

TextView tv = findViewById(R.id.tv);
tv.setText("some text");
setUnderLineText(tv, "some");

এডিটেক্সট, বোতাম, চেকবাক্সের মতো পাঠ্যদর্শন শিশুদের সমর্থন করুন

তুমি যদি চাও

- ক্লিকযোগ্য আন্ডারলাইন পাঠ্য?

- টেক্সটভিউয়ের একাধিক অংশকে আন্ডারলাইন করবেন?

তারপরে এই উত্তরটি পরীক্ষা করুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.