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 अधिक नियंत्रण और बेहतर परफॉरमेंस प्रदान करता है।