রানটাইমে কোনও পাঠ্যদর্শন স্টাইল কীভাবে পরিবর্তন করবেন


99

আমার একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশন রয়েছে যার উপর, যখন ব্যবহারকারী একটি ট্যাপ করে TextView, আমি একটি সংজ্ঞায়িত শৈলী প্রয়োগ করতে চাই।

আমি একটি খুঁজে পেতে ভেবেছিলাম textview.setStyle()কিন্তু এটি বিদ্যমান নেই। আমি চেষ্টা করেছিলাম

textview.setTextAppearance();

কিন্তু এটা কাজ করে না.


4
আমি কোথাও পড়েছি যে এটি সম্ভব নয় ... stackoverflow.com/questions/2016249/… । তবে আপনি কিছু সম্পত্তি আলাদাভাবে সেট করতে পারেন।
ফ্লোরেন

4
আপনি কি চেষ্টা করেছেন: টেক্সটভিউ.সেটটেক্সটটাইপফেস? বিকাশকারী.অ্যান্ড্রয়েড.
জনাথন রথ

21
@ ফালমারী আপনি কি টেক্সটভিউ এপিআই নথিগুলি দেখেছেন? যদি তা হয় তবে আপনি আরও গঠনমূলক কিছু বলতে পারেন।
ফ্লেচ

উত্তর:


143

আমি res/values/style.xmlনিম্নলিখিত হিসাবে একটি নতুন এক্সএমএল ফাইল তৈরি করে এটি করেছি:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="boldText">
        <item name="android:textStyle">bold|italic</item>
        <item name="android:textColor">#FFFFFF</item>
    </style>

    <style name="normalText">
        <item name="android:textStyle">normal</item>
        <item name="android:textColor">#C0C0C0</item>
    </style>

</resources>

আমার "স্ট্রিং.এক্সএমএল" ফাইলটিতে আমার এন্ট্রিও রয়েছে:

<color name="highlightedTextViewColor">#000088</color>
<color name="normalTextViewColor">#000044</color>

তারপরে, আমার কোডে আমি সেই টেক্সটভিউতে ট্যাপ ইভেন্টটি আটকাতে একটি ক্লিকলিস্টার তৈরি করেছি: সম্পাদনা: এপিআই 23 থেকে 'সেটটেক্সট অ্যাপিয়ারেন্স' হ্রাস করা হয়েছে

    myTextView.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view){
                    //highlight the TextView
                    //myTextView.setTextAppearance(getApplicationContext(), R.style.boldText);
    if (Build.VERSION.SDK_INT < 23) {
       myTextView.setTextAppearance(getApplicationContext(), R.style.boldText);
    } else {
       myTextView.setTextAppearance(R.style.boldText);
    }
     myTextView.setBackgroundResource(R.color.highlightedTextViewColor);
                }
            });

এটি আবার পরিবর্তন করতে, আপনি এটি ব্যবহার করবেন:

if (Build.VERSION.SDK_INT < 23) {
    myTextView.setTextAppearance(getApplicationContext(), R.style.normalText);
} else{
   myTextView.setTextAppearance(R.style.normalText);
}
myTextView.setBackgroundResource(R.color.normalTextViewColor);

4
আসলে এটি ছায়া শৈলীর সাথে কাজ করে না। আপনি যদি ছায়া পরিবর্তন করতে চান তবে অবশ্যই এটি অবশ্যই করতে হবে: লকঅ্যাক্সট.সেটস্যাডো লেয়ার (20, 4, 4, 0xFFFF0000);
লুকাস

4
এসডিকে চেক করা এড়াতে আপনি টেক্সটভিউকম্প্যাট.সেটটেক্সট অ্যাপিয়ারেন্স (মাই টেক্সটভিউ, আর স্টাইল.মিস্টাইল) ব্যবহার করতে পারেন;
জাস্টিন ফিডলার

90

জোনাথন যেমন পরামর্শ দিয়েছিলেন, textView.setTextTypefaceকাজগুলি ব্যবহার করে, আমি এটি কয়েক সেকেন্ড আগে সবেমাত্র একটি অ্যাপে ব্যবহার করেছি।

textView.setTypeface(null, Typeface.BOLD); // Typeface.NORMAL, Typeface.ITALIC etc.

9
আপনি টেক্সটভিউ.সেটটাইপফেস ব্যবহার করতে পারেন (নাল, টাইপফেস)) টেক্সটভিউ..সেটটাইপফেস (নাল, টাইপফেস.আইটালিক); টেক্সটভিউ.সেটটাইপফেস (নাল, টাইপফেস। BOLD_ITALIC);
16'11

4
টেক্সটভিউ.সেটটাইপফেস (নাল, টাইপফেস.ফোল্ড) আমার পক্ষে কাজ করেছে। অবশ্যই, আপনি এর পরিবর্তে 1 ব্যবহার করতে পারেন তবে আমার ধারণা ধীরে ধীরে ধীরে ধীরে প্রবেশ করা ভাল অভ্যাস নয়। লাইব্রেরিতে পূর্বনির্ধারিত ভেরিয়েবলগুলি ব্যবহার করা ভাল।
পাইজুসন


4
ভাল একটা! আমার ভুলটি হ'ল আমি প্রথম প্যারামিটারে আমার পুরানো টাইপফেসটি প্রেরণ করছিলাম। সুতরাং আমি যখন সাধারণ -> বোল্ড তবে বোল্ড -> সাধারণ পরিবর্তন করি না তখন এটি কাজ করে। আমি জানতাম না প্রথম প্যারামিটারটি নাল হতে পারে! এখন এটি আমার পক্ষে ঠিক কাজ করে!
ফিলিপ


4

প্রোগ্রামগতভাবে: রান সময়

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

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

এক্সএমএল: ডিজাইনের সময়

আপনি এক্সএমএলেও সেট করতে পারেন:

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

আশা করি এটি সাহায্য করবে

সম্মিলিত


2

আমি textView.setTypeface(Typeface.DEFAULT_BOLD);সবচেয়ে সহজ পদ্ধতি বলে মনে করি।


এটি টাইপফেস পরিবর্তন করে। ওপি দ্বারা নির্দিষ্ট শৈলী নয়
এইচবিজি

সত্য, এখনও এটি সবচেয়ে সহজ পদ্ধতি ছিল - এবং যতদূর আমি একমাত্র পদ্ধতিটি স্মরণ করি - পোস্টের সময়। আমি নিশ্চিত নই যে ইতিমধ্যে কোনও নতুন এপিআই পদ্ধতি যুক্ত করা হয়েছে যা টাইপফেসটি পরিবর্তন না করে "স্টাইল "টিকে গা bold়ে পরিণত করতে সক্ষম করে। আমি ভুল হলে আমাকে সংশোধন করুন।
সিফেরা

1

কোড এই লাইন চেষ্টা।

textview.setTypeface(textview.getTypeface(), Typeface.DEFAULT_BOLD);

এখানে, এটি এই পাঠ্যদর্শন থেকে বর্তমান টাইপফেস পাবেন এবং নতুন টাইপফেস ব্যবহার করে এটি প্রতিস্থাপন করবে। এখানে নতুন টাইপফেস DEFAULT_BOLDতবে আপনি আরও অনেকগুলি প্রয়োগ করতে পারেন।


আপনি বরং ব্যাখ্যা করবেন যে কেন আপনার কোড তার সমস্যার সমাধান করবে, ধন্যবাদ।
মুহাম্মাদ রেফায়াত

ওপেন টাইপফেস নয় , স্টাইল পরিবর্তন করতে চায় ।
এইচবিজি

0

টেক্সটভিউতে http://developer.android.com/references/android/widget/TextView.html এ সেটটেক্সট () এর জন্য ডকো দেখুন

আপনার স্ট্রিংগুলিকে স্টাইল করতে, android.text.style। * অবজেক্টগুলিকে একটি স্প্যানিয়েবল স্ট্রিংয়ের সাথে সংযুক্ত করুন বা এক্সএমএল রিসোর্স ফাইলে বিন্যাসিত পাঠ্য নির্ধারণের উদাহরণের জন্য উপলভ্য রিসোর্স প্রকারের ডকুমেন্টেশন দেখুন।


0

আপনি কোন স্টাইলটি সেট করতে চান তার উপর নির্ভর করে আপনাকে বিভিন্ন পদ্ধতি ব্যবহার করতে হবে। টেক্সটএপিয়ারেন্স স্টাফের নিজস্ব সেটার রয়েছে, টাইপফিসের নিজস্ব সেটার রয়েছে, ব্যাকগ্রাউন্ডের নিজস্ব সেটার ইত্যাদি রয়েছে etc.

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