TextView टेक्स्ट सेट को कैसे सेट करें जैसे कि बोल्ड, इटैलिक


843

TextViewजावा के भीतर और XML लेआउट का उपयोग किए बिना शैली (बोल्ड या इटैलिक) कैसे सेट करें ?

दूसरे शब्दों में, मुझे android:textStyleजावा के साथ लिखने की आवश्यकता है ।

जवाबों:


1885
textView.setTypeface(null, Typeface.BOLD_ITALIC);
textView.setTypeface(null, Typeface.BOLD);
textView.setTypeface(null, Typeface.ITALIC);
textView.setTypeface(null, Typeface.NORMAL);

पिछले टाइपफेस को रखने के लिए

textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC)

5
शैली को हटाने के लिए टाइपफेस का उपयोग किया जा सकता है। सामान्य
ब्राईस गेबिन

351
यदि आप ऐसा करते हैं, तो आप किसी भी पिछले टाइपफेस को खो देंगे। पिछले एक को रखने के लिए, textView.setTypeface (textView.getTypeface (), Typeface.BOLD_ITALIC) जैसे कुछ करें;
leocadiotine

34
textView.setTypeface(textView.getTypeface(), Typeface.NORMAL);एक से बोल्ड या इटैलिक स्टाइल को नहीं हटाएगा TextView। आपको इसके लिए उपयोग करने की आवश्यकता होगी textView.setTypeface(null, Typeface.NORMAL);
जरीट मिलार्ड

57
किसी भी पिछले टाइपफेस को रखने के लिए लेकिन बोल्ड या इटैलिक स्टाइल से छुटकारा पाने के लिए, निम्नलिखित कोड का उपयोग करें:textView.setTypeface(Typeface.create(textView.getTypeface(), Typeface.NORMAL), Typeface.NORMAL);
Shnkc

6
धन्यवाद @ शंख, आपने मुझे सही दिशा की ओर इशारा किया। वास्तव में आपको बस जरूरत है: textView.setTypeface (Typeface.create (textView.getTypeface (), Typeface.NORMAL));
पेड्रोहाइल्डगो

271

इसे TextViewबोल्ड या इटैलिक के लिए सेट करने का प्रयास करें

textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);

14
संयोग से, यदि आप एक मौजूदा टाइपफेस शैली को खाली करना चाहते हैं, तो आपको कुछ अलग करने की आवश्यकता होगी, जैसे:tv.setTypeface(Typeface.create(tv.getTypeface(), Typeface.NORMAL));
greg7gkb

@ greg7gkb tv.setTypeface(null, Typeface.BOLD);ऐसा नहीं करेगा (एक मौजूदा टाइपफेस शैली को साफ़ करें)?
प्रॉप्स

Null को setTypeface () में पास करने का मतलब है कि TextView एक हार्ड-कोडित डिफ़ॉल्ट का उपयोग करता है जो कि टाइपफेस सेट से भिन्न हो सकता है।
greg7gkb

142

प्रोग्राम के रूप में:

आप प्रोग्राम का उपयोग करके कर सकते हैं setTypeface():

textView.setTypeface(null, Typeface.NORMAL);      // for Normal Text
textView.setTypeface(null, Typeface.BOLD);        // for Bold only
textView.setTypeface(null, Typeface.ITALIC);      // for Italic
textView.setTypeface(null, Typeface.BOLD_ITALIC); // for Bold and Italic

एक्सएमएल:

आप XML फ़ाइल में सीधे सेट कर सकते हैं <TextView />जैसे:

android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"

11
प्रश्नकर्ता ने पूछा कि XML लेआउट का उपयोग किए बिना इसे कैसे किया जाए।
जूलियनसाइम्स

6
प्रश्न की जाँच करें with in Java and without using XMLवैसे यह दूसरों को भी मदद करेगा।
प्रतीक बुटानी

5
हाँ। मैं Google के माध्यम से यहां आया था और इसने मेरी मदद की। धन्यवाद :)
अतुल

96

आपके पास दो विकल्प हैं:

विकल्प 1 (केवल बोल्ड, इटैलिक और अंडरलाइन के लिए काम करता है):

String s = "<b>Bolded text</b>, <i>italic text</i>, even <u>underlined</u>!"
TextView tv = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);
tv.setText(Html.fromHtml(s));

विकल्प 2:

स्पैनबल का उपयोग करें ; यह अधिक जटिल है, लेकिन आप पाठ विशेषताओं को गतिशील रूप से संशोधित कर सकते हैं (न केवल बोल्ड / इटैलिक, रंग भी)।


6
साथ typeFaceआप पूरे पाठ के लिए एक ही शैली सेट कर सकते हैं।
गेब्रियल नेगट

2
जब मैं अपनी कस्टम पंक्ति में कोशिश कर रहा हूँ तो यह क्यों नहीं हो रहा है? स्ट्रिंग s1 = "<b> आप पर हैं: </ b>"; धारक.आड्रेस = (पाठ दृश्य) रूपांतर.विद्या दृश्यबाय (आर .आईडी.ड्रेस_टेक्स्ट-साक्षात्कार); धारक.address.setText (Html.fromHtml (s1) + track.getAddress ());
शीलेंद्र मद्दा

2
यह विधि महान आंशिक पाठ स्टाइल है। एक बड़े टेक्स्टव्यू के अंदर एक उद्धरण की तरह।
सालिह एरिकसी

1
पहला तरीका मेरे मामले में काम नहीं करता है निजी शून्य createTextView (स्ट्रिंग शीर्षक, स्ट्रिंग पाठ) {textView = नया TextView (यह); textView.setTextSize (17); textView.setText (Html.fromHtml ("<b>" + शीर्षक + "</ b>") + ":" + पाठ); }
गेरिनॉन्डेम

1
यदि पाठ लेआउट लेआउट के कारण बड़ा है, तो spannable और fromHTML विकल्प टाइपिंग / सेटटेक्स्ट को धीमा कर सकते हैं। यदि आपके पास अन्य तरीके उपलब्ध हैं तो इससे बचें।
यूजीन कार्तोयेव

42

प्रोग्राम के रूप में:

आप setTypeface()विधि का उपयोग करके प्रोग्राम कर सकते हैं :

नीचे डिफ़ॉल्ट टाइपफेस के लिए कोड है

textView.setTypeface(null, Typeface.NORMAL);      // for Normal Text
textView.setTypeface(null, Typeface.BOLD);        // for Bold only
textView.setTypeface(null, Typeface.ITALIC);      // for Italic
textView.setTypeface(null, Typeface.BOLD_ITALIC); // for Bold and Italic

और यदि आप कस्टम टाइपफेस सेट करना चाहते हैं :

textView.setTypeface(textView.getTypeface(), Typeface.NORMAL);      // for Normal Text
textView.setTypeface(textView.getTypeface(), Typeface.BOLD);        // for Bold only
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);      // for Italic
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC); // for Bold and Italic

एक्सएमएल:

आप <TextView />इस तरह सीधे XML फ़ाइल में सेट कर सकते हैं :

android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"

या आप अपने fav फ़ॉन्ट (परिसंपत्तियों से) सेट कर सकते हैं। अधिक जानकारी के लिए लिंक देखें


14
TextView text = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);

अब textviewगुण सेट करें ..

text.setTypeface(null, Typeface.BOLD);  //-- for only bold the text
text.setTypeface(null, Typeface.BOLD_ITALIC);  //-- for  bold & italic the text
text.setTypeface(null, Typeface.ITALIC);  // -- for  italic the text

11

बस अगर आप टेक्स्ट को बोल्ड बनाना चाहते हैं । टेक्स्ट व्यू प्रॉपर्टी में इस लाइन को अपने लेआउट में लिखें

android:textStyle="bold"


10

यह होगा

yourTextView.setTypeface(null,Typeface.DEFAULT_BOLD);

और इटैलिक की जगह के साथ होने के लिए सक्षम होना चाहिए Typeface.DEFAULT_BOLDके साथ Typeface.DEFAULT_ITALC

मुझे पता है कि यह कैसे काम करता है।


10

अपनी TextView शैली को जावा कोड द्वारा सेट करने का प्रयास करें

txt1.setTypeface(null,Typeface.BOLD_ITALIC);


7

इसे इस्तेमाल करे:

textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);


4

ऐसा करने का मानक तरीका कस्टम शैलियों का उपयोग करना है। भूतपूर्व

में styles.xmlनिम्नलिखित जोड़ें।

<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="MyApp.TextAppearance.LoginText">
    <item name="android:textStyle">bold|italic</item>
</style>

इस स्टाइल को अपने TextViewअनुसार अप्लाई करें।

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@style/MyApp.TextAppearance.LoginText" />

4

एक तरीका यह है कि आप कर सकते हैं:

myTextView.setTypeface(null, Typeface.ITALIC);
myTextView.setTypeface(null, Typeface.BOLD_ITALIC);
myTextView.setTypeface(null, Typeface.BOLD);
myTextView.setTypeface(null, Typeface.NORMAL);

एक अन्य विकल्प यदि आप पिछले टाइपफेस रखना चाहते हैं और पहले लागू किए गए को खोना नहीं चाहते हैं:

myTextView.setTypeface(textView.getTypeface(), Typeface.NORMAL);      
myTextView.setTypeface(textView.getTypeface(), Typeface.BOLD);        
myTextView.setTypeface(textView.getTypeface(), Typeface.ITALIC);      
myTextView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC); 

4
textView.setTypeface(null, Typeface.BOLD_ITALIC);
textView.setTypeface(null, Typeface.BOLD);
textView.setTypeface(null, Typeface.ITALIC);
textView.setTypeface(null, Typeface.NORMAL);

पिछले टाइपफेस को रखने के लिए

textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC)


3

शैली चयन मानदंड के आधार पर आप कर सकते हैं सबसे आसान तरीका:

String pre = "", post = "";

if(isBold){
    pre += "<b>"; post += "</b>";
}
if(isItalic){
    pre += "<i>"; post += "</i>";
}
if(isUnderline){
    pre += "<u>"; post += "</u>";
}

textView.setText(Html.fromHtml(pre + editText.getText().toString()+ post));
// you can also use it with EidtText
editText.setText(Html.fromHtml(pre + editText.getText().toString()+ post));

2

चूंकि मैं एक कस्टम फ़ॉन्ट का उपयोग करना चाहता हूं, इसलिए मेरे लिए कई उत्तरों के संयोजन काम करते हैं। स्पष्ट रूप से मेरी layout.xmlतरह की सेटिंग्स को android:textStlyle="italic"एओएस द्वारा अनदेखा किया गया था। तो अंत में मुझे निम्नानुसार करना था: strings.xmlलक्ष्य में स्ट्रिंग के रूप में घोषित किया गया था:

<string name="txt_sign"><i>The information blah blah ...</i></string>

इसके बाद कोड में:

TextView textSign = (TextView) findViewById(R.id.txt_sign);
FontHelper.setSomeCustomFont(textSign);
textSign.setTypeface(textSign.getTypeface(), Typeface.ITALIC);

मैंने Spannableविकल्प की कोशिश नहीं की (जो मुझे काम करना चाहिए) लेकिन

textSign.setText(Html.fromHtml(getString(R.string.txt_sign))) 

कोई प्रभाव नहीं पड़ा। इसके अलावा अगर मैं सभी को अकेले छोड़ने italic tagसे हटाता हूं तो इसका कोई प्रभाव नहीं पड़ता है। मुश्किल Android ...strings.xmlsetTypeface()


2

और जैसा कि यहाँ समझाया गया है Android Developers String Resources यदि आपको अपने स्टाइल टेक्स्ट संसाधन में मापदंडों का उपयोग करने की आवश्यकता है, तो आपको शुरुआती कोष्ठकों से बचना होगा

<resources>
<string name="welcome_messages">Hello, %1$s! You have &lt;b>%2$d new messages&lt;/b>.</string>
</resources>

और कॉल प्रारूपHtml (स्ट्रिंग)

Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
CharSequence styledText = Html.fromHtml(text);

2

मेरे मामले में:

1 - सेट पाठ

2 - सेट टाइपफेस

holder.title.setText(item.nome);
holder.title.setTypeface(null, Typeface.BOLD);

1

यह केवल एक चीज है जो मेरे लिए वनप्लस 5 टी पर वनप्लस स्लेट ™ फ़ॉन्ट से कॉन्फ़िगर की गई है:

textView.setTypeface(Typeface.create(textView.getTypeface(), useBold ? Typeface.BOLD : Typeface.NORMAL));

अन्य विधियाँ इसे Boto या NORMAL होने पर Roboto पर वापस लाएँगी।


1

AndroidX के साथ सरलीकृत टैग का उपयोग करते समय HtmlCompat.fromHtml () का उपयोग करने पर विचार करें

String s = "<b>Bolded text</b>, <i>italic text</i>, even <u>underlined</u>!"    
TextView tv = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);
tv.setText(HtmlCompat.fromHtml(s, FROM_HTML_MODE_LEGACY));

0

सबसे अच्छा तरीका है इसे परिभाषित करना styles.xml

<style name="common_txt_style_heading" parent="android:style/Widget.TextView">
        <item name="android:textSize">@dimen/common_txtsize_heading</item>
        <item name="android:textColor">@color/color_black</item>
        <item name="android:textStyle">bold|italic</item>
</style>

और इसमें अपडेट करें TextView

  <TextView
     android:id="@+id/txt_userprofile"
     style="@style/common_txt_style_heading"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_centerHorizontal="true"
     android:layout_marginTop="@dimen/margin_small"
     android:text="@string/some_heading" />

0
AppCompatTextView text =(AppCompatTextView)findViewById(R.layout.appCompatTextView1);
text.setTypeface(null,Typeface.BOLD);

टाइपफेस प्रोग्राम को सेट करने के लिए उपरोक्त विधि का उपयोग करें।


0

1) आप इसे टाइपफेस के साथ सेट कर सकते हैं। 2) आप सीधे स्ट्रिंग्स में उपयोग कर सकते हैं। xml (आपके मान फ़ोल्डर में) 3) आप स्ट्रिंग कर सकते हैं myNewString = "यह मेरा बोल्ड टेक्स्ट है यह मेरा इटैलिक स्ट्रिंग है यह मेरा रेखांकित स्ट्रिंग है


0

आप नीचे दिए गए उदाहरण का उपयोग करके विभिन्न टाइपफेस सेट कर सकते हैं -

textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);

या यदि आप एक अलग फ़ॉन्ट और इसके टाइपफेस सेट करना चाहते हैं। इसे संपत्ति या कच्चे फ़ोल्डर में जोड़ें और फिर इसका उपयोग करें

  Typeface face= Typeface.createFromAsset(getAssets(), "font/font.ttf");
  tv1.setTypeface(face);

  Typeface face1= Typeface.createFromAsset(getAssets(), "font/font1.ttf");
  tv2.setTypeface(face1);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.