কোনও অ্যান্ড্রয়েড টেক্সটভিউতে ফন্ট শৈলীটি কীভাবে সাহসী, তির্যক এবং আন্ডারলাইন করা যায়?


450

আমি একটি TextViewসামগ্রীর সাহসী, তির্যক এবং আন্ডারলাইন করতে চাই। আমি নিম্নলিখিত কোডটি চেষ্টা করেছিলাম এবং এটি কাজ করে, তবে রেখাচিত্রটি দেয় না।

<Textview android:textStyle="bold|italic" ..

আমি এটা কিভাবে করব? কোন দ্রুত ধারণা?


এটি কি কেবল তাদের মধ্যে একটি সেট করতে কাজ করে?
ফালস্ট্রো

হ্যাঁ ঠিকঠাক কাজ করছি আমি এটিকেও লাইনের আওতায় আনতে চাই।
d-man

6
textView.setPaintFlags (Paint.UNDERLINE_TEXT_FLAG);
বিলি্লিকস

15
tv.setTypeface(null, Typeface.BOLD_ITALIC);

3
অ্যান্ড্রয়েড টেক্সটভিউ বোল্ড করার 4 টি উপায় আমার মনে হয় আপনার এই নিবন্ধটি পড়া উচিত।
c49

উত্তর:


279

আমি আন্ডারলাইন সম্পর্কে জানি না, তবে সাহসী এবং তির্যক জন্য রয়েছে "bolditalic"। এখানে আন্ডারলাইনের কোনও উল্লেখ নেই: http://developer.android.com/references/android/widget/TextView.html#attr_android:textStyle

আপনি যে উল্লেখ করা bolditalicদরকার তা ব্যবহার করার জন্য আপনাকে মনে করুন এবং আমি সেই পৃষ্ঠাটি থেকে উদ্ধৃত করছি

নিম্নলিখিত ধ্রুবক মানগুলির মধ্যে এক বা একাধিক ('|' দ্বারা পৃথক) হওয়া আবশ্যক।

সুতরাং আপনি ব্যবহার করতে চাই bold|italic

আপনি এই প্রশ্নটিকে আন্ডারলাইনের জন্য পরীক্ষা করতে পারেন : আমি কি কোনও অ্যান্ড্রয়েড বিন্যাসে পাঠ্যটিকে আন্ডারলাইন করতে পারি?


48
আন্ডার লাইনের জন্য .. textView.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG);
বিলি ক্লিকস

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

361

এটি আপনার পাঠ্যদর্শনকে একই সাথে সাহসী , আন্ডারলাইন করা এবং তির্যক করা উচিত।

strings.xml

<resources>
    <string name="register"><u><b><i>Copyright</i></b></u></string>
</resources>

আপনার স্ট্রিংটি আপনার টেক্সটভিউতে সেট করতে আপনার মেইন.এমএমএল এ করুন

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/textview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="@string/register" />

বা জাভাতে ,

TextView textView = new TextView(this);
textView.setText(R.string.register);

কখনও কখনও উপরের পদ্ধতিটি কার্যকর হবে না যখন আপনি ডায়নামিক পাঠ্য ব্যবহার করতে পারেন। সুতরাং সেই ক্ষেত্রে স্প্যানিয়েবল স্ট্রিং কার্যকর হয়।

String tempString="Copyright";
TextView text=(TextView)findViewById(R.id.text);
SpannableString spanString = new SpannableString(tempString);
spanString.setSpan(new UnderlineSpan(), 0, spanString.length(), 0);
spanString.setSpan(new StyleSpan(Typeface.BOLD), 0, spanString.length(), 0);
spanString.setSpan(new StyleSpan(Typeface.ITALIC), 0, spanString.length(), 0);
text.setText(spanString);

আউটপুট

এখানে চিত্র বর্ণনা লিখুন


3
আমি এটি ২.১-এ চেক করেছি। সুতরাং কমপক্ষে এটি 2.1 এবং তার থেকে উপরে থেকে কাজ করা উচিত
Andro Selva

ব্যবহার বিবেচনা করতে পারেনnew StyleSpan(Typeface.BOLD_ITALIC)
চেওক ইয়ান চেং

কেন এটি গতিশীল একত্রিত স্ট্রিংয়ে কাজ করছে না? এটি তারযুক্ত যা কিছু সংখ্যা উপস্থিত হয়েছিল ....
অবিবি

152

বা কোটলিনে ঠিক এর মতো:

val tv = findViewById(R.id.textViewOne) as TextView
tv.setTypeface(null, Typeface.BOLD_ITALIC)
// OR
tv.setTypeface(null, Typeface.BOLD or Typeface.ITALIC)
// OR
tv.setTypeface(null, Typeface.BOLD)
// OR
tv.setTypeface(null, Typeface.ITALIC)
// AND
tv.paintFlags = tv.paintFlags or Paint.UNDERLINE_TEXT_FLAG

বা জাভাতে:

TextView tv = (TextView)findViewById(R.id.textViewOne);
tv.setTypeface(null, Typeface.BOLD_ITALIC);
// OR
tv.setTypeface(null, Typeface.BOLD|Typeface.ITALIC);
// OR
tv.setTypeface(null, Typeface.BOLD);
// OR
tv.setTypeface(null, Typeface.ITALIC);
// AND
tv.setPaintFlags(tv.getPaintFlags()|Paint.UNDERLINE_TEXT_FLAG);

এটি সহজ এবং এক লাইনে রাখুন :)


1
আপনি যে ভিউ নিয়ে কাজ করছেন তার জন্য কোটলিনেক্স.অ্যান্ড্রয়েড.সেন্টিথেটিক প্যাকেজ Byোকিয়ে প্রতিটি সেট টাইপফেস লাইন তৈরি করে কোটলিনে FindViewByID প্রয়োজন হয় না: TextViewOne.setTypeface (...)
cren90

হয় paintFlagsপ্রয়োজনীয়? এটি ছাড়াই কাজ করছে
প্রবস

75

সাহসী এবং ইটালিকের জন্য আপনি যা করছেন তা নীচের কোডটি আন্ডারস্কোর ব্যবহারের জন্য সঠিক

HelloAndroid.java

 package com.example.helloandroid;

 import android.app.Activity;
 import android.os.Bundle;
 import android.text.SpannableString;
 import android.text.style.UnderlineSpan;
import android.widget.TextView;

public class HelloAndroid extends Activity {
TextView textview;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    textview = (TextView)findViewById(R.id.textview);
    SpannableString content = new SpannableString(getText(R.string.hello));
    content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
    textview.setText(content);
}
}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/hello"
android:textStyle="bold|italic"/>

string.xml

<?xml version="1.0" encoding="utf-8"?>
 <resources>
  <string name="hello">Hello World, HelloAndroid!</string>
  <string name="app_name">Hello, Android</string>
</resources>

নীচের underlineপরিবর্তে পাস নাল মানটি সরাতেnew UnderlineSpan()content.setSpan(null, 0, content.length(), 0);
সামি এলটামায়ে

47

অন্যান্য সেটিংস বজায় রেখে আন্ডারলাইন যুক্ত করার এটি সহজ উপায়:

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

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

42

Programmatialy:

আপনি সেট টাইপফেস () পদ্ধতিটি ব্যবহার করে প্রোগ্রামগতভাবে করতে পারেন:

ডিফল্ট টাইপফেসের জন্য নীচে কোড রয়েছে

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

এক্সএমএল:

আপনি সরাসরি এক্সএমএল ফাইলটিতে এ জাতীয় পছন্দ করতে পারেন:

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

আমি সেট টাইপফেস ব্যবহার করে ফন্ট পরিবার কীভাবে পরিবর্তন করতে পারি তা সাহসী, তির্যক, আন্ডারলাইন প্রয়োগ করে?
প্রিন্স


23

আপনি যদি কোনও ফাইল বা নেটওয়ার্ক থেকে সেই পাঠ্যটি পড়ছেন।

উল্লিখিত মতো আপনার পাঠ্যে এইচটিএমএল ট্যাগ যুক্ত করে আপনি এটি অর্জন করতে পারেন

This text is <i>italic</i> and <b>bold</b>
and <u>underlined</u> <b><i><u>bolditalicunderlined</u></b></i>

এবং তারপরে আপনি এইচটিএমএল ক্লাস ব্যবহার করতে পারেন যা এইচটিএমএল স্ট্রিংগুলিকে প্রদর্শনযোগ্য স্টাইলযুক্ত পাঠ্যে প্রক্রিয়াকরণ করতে পারে ।

// textString is the String after you retrieve it from the file
textView.setText(Html.fromHtml(textString));

: fromHtml (STRING) পদ্ধতি এপিআই স্তরের 24 আরো আলোচনা এখানে অসমর্থিত হয়েছে stackoverflow.com/questions/37904739/...
পাভেল Biryukov

20

উদ্ধৃতি ছাড়া আমার জন্য কাজ করে:

<item name="android:textStyle">bold|italic</item>

5
    style="?android:attr/listSeparatorTextViewStyle
  • এই স্টাইলটি তৈরি করে আপনি নিম্নরেখা অর্জন করতে পারেন


3

কোটলিনকে এর নির্ভরতার buildSpannedString{}অধীনে ব্যবহার করে আপনি এটি সহজেই অর্জন করতে পারেন core-ktx

val formattedString = buildSpannedString {
    append("Regular")
    bold { append("Bold") }
    italic { append("Italic") }
    underline { append("Underline") }
    bold { italic {append("Bold Italic")} }
}

textView.text = formattedString

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