Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

एंड्रॉइड में TextView के विशिष्ट टेक्स्ट को बोल्ड कैसे करें?

TextView में SpannableString का उपयोग करके आंशिक टेक्स्ट बोल्ड करना

यह गाइड दर्शाता है कि एक ही TextView के अंदर विशिष्ट शब्दों या वाक्यांशों को बोल्ड कैसे बनाया जाए, SpannableString और StyleSpan का उपयोग करके।

लेआउट (activity_main.xml)

<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="24dp">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textSize="24sp"
        android:layout_margin="25dp" />
</RelativeLayout>

MainActivity.java - StyleSpan का उपयोग

import android.graphics.Typeface;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.StyleSpan;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView textView = findViewById(R.id.textView);
        String fullText = "मेरा पसंदीदा खाना बिरयानी है";
        
        SpannableString spannableString = new SpannableString(fullText);
        
        // "बिरयानी" शब्द को बोल्ड करें (इंडेक्स 13 से 20 तक)
        StyleSpan boldSpan = new StyleSpan(Typeface.BOLD);
        spannableString.setSpan(boldSpan, 13, 20, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        
        textView.setText(spannableString);
    }
}

अन्य उपयोगी स्पैन्स

SpannableString spannable = new SpannableString("स्टाइल्ड टेक्स्ट उदाहरण");

// इटैलिक
spannable.setSpan(new StyleSpan(Typeface.ITALIC), 0, 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

// बोल्ड + इटैलिक
spannable.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 8, 14, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

// अंडरलाइन
spannable.setSpan(new UnderlineSpan(), 15, 23, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

// स्ट्राइकथ्रू
spannable.setSpan(new StrikethroughSpan(), 24, 31, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

// टेक्स्ट रंग
spannable.setSpan(new ForegroundColorSpan(Color.RED), 0, 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

// बैकग्राउंड रंग
spannable.setSpan(new BackgroundColorSpan(Color.YELLOW), 8, 14, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

// कस्टम फॉन्ट
Typeface customFont = ResourcesCompat.getFont(this, R.font.custom_font);
spannable.setSpan(new CustomTypefaceSpan("", customFont), 15, 23, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

// टेक्स्ट साइज़ (निरपेक्ष)
spannable.setSpan(new AbsoluteSizeSpan(36, true), 24, 31, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

// सापेक्ष साइज़
spannable.setSpan(new RelativeSizeSpan(1.5f), 24, 31, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

// क्लिक करने योग्य स्पैन
ClickableSpan clickableSpan = new ClickableSpan() {
    @Override
    public void onClick(View widget) {
        Toast.makeText(MainActivity.this, "क्लिक किया गया!", Toast.LENGTH_SHORT).show();
    }
};
spannable.setSpan(clickableSpan, 0, 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// क्लिक इनेबल करने के लिए:
textView.setMovementMethod(LinkMovementMethod.getInstance());

Kotlin एक्सटेंशन फंक्शन (रीयूजेबल)

fun TextView.setBoldText(fullText: String, boldParts: List) {
    val spannable = SpannableString(fullText)
    for (part in boldParts) {
        val start = fullText.indexOf(part)
        if (start >= 0) {
            spannable.setSpan(StyleSpan(Typeface.BOLD), start, start + part.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
        }
    }
    this.text = spannable
}

// उपयोग:
textView.setBoldText("मेरा पसंदीदा खाना बिरयानी है", listOf("बिरयानी"))

HTML विकल्प (सरल मामलों के लिए)

textView.setText(Html.fromHtml("मेरा पसंदीदा खाना बिरयानी है", Html.FROM_HTML_MODE_LEGACY))

नोट

Html.fromHtml() सरल है लेकिन SpannableString अधिक नियंत्रण और बेहतर परफॉरमेंस प्रदान करता है।

  1. Android TextView में टेक्स्ट को जस्टिफाई कैसे करें? Android TextView में टेक्स्ट को जस्टिफाई कैसे करें?

    TextView में टेक्स्ट जस्टिफिकेशन Android 8.0 (API 26) से android:justificationMode=inter_word एट्रिब्यूट का उपयोग करके TextView में टेक्स्ट को जस्टिफाई (दोनों किनारों पर संरेखित) किया जा सकता है। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें (न्यूनतम API 26 या अधिक)। चरण 2

  1. Android TextView में टेक्स्ट को जस्टिफाई कैसे करें? Android TextView में टेक्स्ट को जस्टिफाई कैसे करें?

    यह उदाहरण दर्शाता है कि Android में TextView में टेक्स्ट को जस्टिफाई (दोनों किनारों पर अलाइन) कैसे किया जाता है। समस्या Android का स्टैंडर्ड TextView android:gravity=center_horizontal या left|right से जस्टिफिकेशन सपोर्ट नहीं करता। API 26 (Android 8.0) से android:justificationMode=inter_word उपलब्ध

  1. Tkinter में विशिष्ट टेक्स्ट को नॉन-रिमूवेबल कैसे बनाएं? Tkinter में विशिष्ट टेक्स्ट को नॉन-रिमूवेबल कैसे बनाएं?

    Tkinter में, उपयोगकर्ता दो बुनियादी टेक्स्ट इनपुट विजेट्स - Text विजेट और Entry विजेट का उपयोग करके टेक्स्ट इनपुट कर सकते हैं। Text विजेट आमतौर पर मल्टीलाइन उपयोगकर्ता इनपुट स्वीकार करने के लिए उपयोग किया जाता है, जबकि Entry विजेट में, उपयोगकर्ता केवल सिंगल-लाइन टेक्स्ट टाइप कर सकता है। आप इन विजेट