টেক্সটভিউ টেক্সটস্টাইল কীভাবে সেট করা যায় যেমন বোল্ড, ইটালিক


843

TextViewএক্সএমএল লেআউট ব্যবহার না করে জাভা এবং স্টাইল (সাহসী বা তির্যক) কীভাবে সেট করবেন ?

অন্য কথায়, আমার android:textStyleজাভা দিয়ে লিখতে হবে ।

উত্তর:


1884
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
শৈলীটি সরাতে টাইপফেস ব্যবহার করা যেতে পারে OR সাধারণ
ব্রেইস গাবিন

351
যদি আপনি এটি করেন তবে আপনি আগের কোনও টাইপফেস হারাবেন। পূর্ববর্তীটি ধরে রাখতে, পাঠ্য ভিউ.সেটটাইপফেস (টেক্সটভিউ.সেটটাইপফেস (), টাইপফেস। BOLD_ITALIC) এর মতো কিছু করুন;
লিওকাডিয়োটিন

34
textView.setTypeface(textView.getTypeface(), Typeface.NORMAL);এ থেকে গা bold় বা তির্যক স্টাইলিং সরিয়ে ফেলবে না TextView। আপনার এটি ব্যবহার করতে হবে textView.setTypeface(null, Typeface.NORMAL);
জ্যারেট মিল্লার্ড

57
পূর্ববর্তী কোনও textView.setTypeface(Typeface.create(textView.getTypeface(), Typeface.NORMAL), Typeface.NORMAL);
টাইপফাইস রাখতে তবে গা bold়

6
ধন্যবাদ @ শনকসি, আপনি আমাকে সঠিক দিকে নির্দেশ করেছেন। আসলে আপনার কেবল দরকার: টেক্সটভিউ.সেটটাইপফেস (টাইপফেস.ক্রিয়েট (টেক্সটভিউ.সেটটাইপফেস (), টাইপফেস.অনরমাল));
পেড্রোহিডালগো

271

TextViewগা bold় বা তির্যক জন্য এটি চালু করতে চেষ্টা করুন

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));
গ্রেগ 7gkb

@ greg7gkb tv.setTypeface(null, Typeface.BOLD);এটি কি একই রকম হবে না (বিদ্যমান টাইপফেসের স্টাইলটি সাফ করুন)?
প্রবস

সেট টাইপফেসে নাল পাস করার অর্থ হ'ল টেক্সটভিউ একটি হার্ড-কোডড ডিফল্ট ব্যবহার করে যা টাইপফেসের আগের সেট থেকে আলাদা হতে পারে।
গ্রেগ 7gkb

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

এক্সএমএল:

আপনি সরাসরি এক্সএমএল ফাইলটিতে এ জাতীয় <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
হ্যাঁ. আমি গুগলের মাধ্যমে এখানে এসেছি এবং এটি আমাকে কেবল সহায়তা করেছিল। ধন্যবাদ :)
অতুল

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:

একটি স্প্যানিয়েবল ব্যবহার করুন ; এটি আরও জটিল, তবে আপনি পাঠ্যের বৈশিষ্ট্যগুলিকে গতিশীলভাবে সংশোধন করতে পারেন (কেবল গা bold় / তির্যক নয় রঙও)।


6
typeFaceআপনি পুরো পাঠ্যের জন্য একটি একক শৈলী সেট করতে পারেন সঙ্গে ।
গ্যাব্রিয়েল নেগুট

2
যখন আমি আমার কাস্টম সারিতে চেষ্টা করছি তখন কেন এটি হচ্ছে না? স্ট্রিং এস 1 = "<b> আপনি এখানে আছেন: </ b>"; ধারক.অ্যাড্রেস = (টেক্সটভিউ) রূপান্তর ভিউ.ফাইন্ডভিউবিআইআইডি (আর.আইডি.এডড্রেস_টেক্সট_ভিউ); ধারক.এড্রেস.সেটেক্সট (এইচটিএমএল.ফ্রমএইচটিএমএল (এস 1) + ট্র্যাক.সেটএড্রেস ());
শৈলেন্দ্র মাদদা

2
এই পদ্ধতিটি দুর্দান্ত আংশিক পাঠ্য স্টাইলিং। একটি বৃহত পাঠ্যদর্শনটির ভিতরে একটি উদ্ধৃতি পছন্দ করুন।
সালেহ এরিকি

1
প্রথম পদ্ধতিটি আমার ক্ষেত্রে প্রাইভেট অকার্যকর ক্রিয়েটেক্সটভিউ (স্ট্রিং শিরোনাম, স্ট্রিং টেক্সট) কাজ করে না {টেক্সটভিউ = নতুন টেক্সটভিউ (এটি); textView.setTextSize (17); TextView.setText (Html.fromHtml ("<b>" + শিরোনাম + "</ b>") + ":" + পাঠ্য); }
গ্যারিওনডেম

1
লেআউট পুনর্বিবেচনার কারণে যদি পাঠ্য বড় হয় তবে স্প্যানিয়েবল এবং থেকে এইচটিএমএল বিকল্পগুলি টাইপিং / সেটটেক্সট কমিয়ে দিতে পারে। আপনার যদি অন্য পদ্ধতি উপলব্ধ থাকে তবে তা এড়িয়ে চলুন।
ইউজিন কার্তোয়েভ

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 />:

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

অথবা আপনি আপনার ফেভার ফন্ট সেট করতে পারেন (সম্পদ থেকে)। আরও তথ্যের জন্য লিঙ্ক দেখুন


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"AOS দ্বারা উপেক্ষা করা হয়েছে। সুতরাং অবশেষে আমাকে নিম্নরূপটি করতে হয়েছিল: 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বিকল্পটি চেষ্টা করি নি (যা আমি কাজটি ধরে নিই) তবে না but

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

কোন প্রভাব ছিল। এছাড়াও যদি আমি সমস্ত একা ছেড়ে দেওয়া italic tagথেকে সরিয়ে ফেলি তবে এর কোনও প্রভাব নেই। কৌতুকপূর্ণ অ্যান্ড্রয়েড ...strings.xmlsetTypeface()


2

এবং এখানে যেমন ব্যাখ্যা করা হয়েছে অ্যান্ড্রয়েড বিকাশকারীদের স্ট্রিং রিসোর্সগুলি যদি আপনার স্টাইলযুক্ত পাঠ্য সংস্থার মধ্যে প্যারামিটার ব্যবহার করতে হয় তবে আপনাকে খোলার বন্ধনীগুলি এড়াতে হবে

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

এবং কল ফর্ম্যাটএইচটিএমএল (স্ট্রিং)

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 টিতে ওয়ানপ্লাস স্লেট on ফন্টের সাথে কনফিগার করা কাজ করেছিল:

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

অন্য পদ্ধতিগুলি যখন বোল্ড বা সাধারণ হয় তখন তা রোবোটোর দিকে ফিরে যায়।


1

অ্যান্ড্রয়েডএক্সের সাথে সরলীকৃত ট্যাগগুলি ব্যবহার করার সময় 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) আপনি টাইপফ্রেস দিয়ে সেট করতে পারেন। ২) আপনি সরাসরি স্ট্রিং.এক্সএমএল (আপনার মান ফোল্ডারে) ব্যবহার করতে পারেন 3) আপনি স্ট্রিং করতে পারেন myNewString = "এটি আমার গা bold় পাঠ্য এটি আমার তির্যক স্ট্রিং এটি আমার আন্ডারলাইনযুক্ত স্ট্রিং


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