জাভা কোডে "অ্যান্ড্রয়েড: ফন্টফ্যামিলি =" সানস-সেরিফ-লাইট "এর সমতুল্য কী?


106

আমার প্রশ্নটি বেশ সহজ:

আমার প্রতিটি পাঠ্যদর্শনটিতে আমি বর্তমানে বৈশিষ্ট্যটি ব্যবহার করছি

android:fontFamily="sans-serif-light"

পোস্ট এইচসি ডিভাইসগুলিতে চমত্কার চেহারা সরবরাহ করতে provide

দুর্ভাগ্যক্রমে, এটি প্রতিটি উইজেটের সাথে এবং আমার স্পিনারদের সাথে কাজ করে না, আমাকে অ্যাডাপ্টারটি ওভাররাইট করা দরকার।

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    //You can use the new tf here.

    if(convertView == null || convertView.getTag() == null) {
        // new view - populate 
        convertView = inflater.inflate(android.R.layout.simple_spinner_dropdown_item, parent, false);
        convertView.setTag(new Object());
    }

    CheckedTextView spinner_text=(CheckedTextView) convertView.findViewById(android.R.id.text1);
    //Typeface should be set here...
    return spinner_text;
    }
}

সুতরাং, কোড দ্বারা ঠিক একই ফলাফল পাওয়ার কোনও উপায় আছে?

পিএস: না, আমি সম্পদ ফোল্ডারে কোনও টাইপফেস রাখতে চাই না, আমি কেবল একটি সিস্টেম ব্যবহার করতে চাই।

উত্তর:


168

এটি দিয়ে setTypeface()এবং সম্ভব হওয়া উচিত Typeface.create():

convertView.setTypeface(Typeface.create("sans-serif-light", Typeface.NORMAL));

দস্তাবেজগুলি দেখুন :

একটি পরিবারের নাম এবং বিকল্প শৈলীর তথ্য প্রদত্ত একটি টাইপফেস অবজেক্ট তৈরি করুন। যদি নামের জন্য নালটি পাস করা হয়, তবে "ডিফল্ট" ফন্টটি বেছে নেওয়া হবে। ফলাফলটি টাইপফেস অবজেক্টকে জিজ্ঞাসা করা যেতে পারে ( getStyle()) এর "আসল" শৈলীর বৈশিষ্ট্যগুলি কী তা আবিষ্কার করতে discover

নোট করুন যে অতিরিক্ত ব্যবহার Typeface.create()করা আপনার স্মৃতিশক্তির জন্য খারাপ, যেমনটি এই মন্তব্যে বলা হয়েছে । প্রস্তাবিত hashtable একটি ভাল সমাধান, কিন্তু আপনি এটা একটু যেহেতু আপনি একটি সম্পদ থেকে আপনার টাইপফেস তৈরি করবেন না পরিবর্তন করতে হবে।


2
আপনার যদি অনেক স্পিনার আইটেম থাকে তবে দয়া করে মেমরির সমস্যা থেকে সাবধান থাকুন - আমি আমার উত্তরটি কিছুটা আপডেট করেছি।
সাসচোয়ার

44

অ্যান্ড্রয়েড ৪.১ (এপিআই লেভেল ১ 16) এবং সমর্থন লাইব্রেরি ২ higher এবং এর বেশি

আপনি যদি রেজ -> ফন্ট ফোল্ডার ব্যবহার করছেন তবে আপনি এটি ব্যবহার করতে পারেন

  val typeface = ResourcesCompat.getFont(Context, R.font.YOUR_FONT)
  TextView.setTypeface(typeface)

20

আমার মতে মেমরির কোনও সমস্যা না থাকলে টেক্সটভিউতে সিস্টেম ফন্টগুলি প্রোগ্রমেটিকভাবে প্রয়োগ করার উপায় রয়েছে এবং এটি textview.setTextAppearanceপদ্ধতিটি ব্যবহার করছে :

<style name="styleA">
    <item name="android:fontFamily">sans-serif</item>
    <item name="android:textStyle">bold</item>
    <item name="android:textColor">?android:attr/textColorPrimary</item>
</style>
<style name="styleB">
    <item name="android:fontFamily">sans-serif-light</item>
    <item name="android:textStyle">normal</item>
    <item name="android:textColor">?android:attr/textColorTertiary</item>
</style>


if(condition){
    textView.setTextAppearance(context,R.style.styleA);
}else{
    textView.setTextAppearance(context,R.style.styleB);
}

2
android:fontFamily
এআইপিআই

2
ব্যবহার TextViewCompat.setTextAppearance(textView, R.style.styleA)
কুলমাইন্ড

19

গতিশীলভাবে আপনি ফন্টফ্যামিলি অ্যান্ড্রয়েডের অনুরূপ সেট করতে পারেন: এটি ব্যবহার করে ফন্টফ্যামিলি xML এ,

For Custom font:

 TextView tv = ((TextView) v.findViewById(R.id.select_item_title));
 Typeface face=Typeface.createFromAsset(getAssets(),"fonts/mycustomfont.ttf"); 
 tv.setTypeface(face);

For Default font:

 tv.setTypeface(Typeface.create("sans-serif-medium",Typeface.NORMAL));

এটি ডিফল্ট ফন্ট পরিবারের ব্যবহৃত তালিকার তালিকা, ডাবল উদ্ধৃতি স্ট্রিং "সানস-সেরিফ-মিডিয়াম" প্রতিস্থাপন করে এর যে কোনওটি ব্যবহার করুন

FONT FAMILY                    TTF FILE                    

1  casual                      ComingSoon.ttf              
2  cursive                     DancingScript-Regular.ttf   
3  monospace                   DroidSansMono.ttf           
4  sans-serif                  Roboto-Regular.ttf          
5  sans-serif-black            Roboto-Black.ttf            
6  sans-serif-condensed        RobotoCondensed-Regular.ttf 
7  sans-serif-condensed-light  RobotoCondensed-Light.ttf   
8  sans-serif-light            Roboto-Light.ttf            
9  sans-serif-medium           Roboto-Medium.ttf           
10  sans-serif-smallcaps       CarroisGothicSC-Regular.ttf 
11  sans-serif-thin            Roboto-Thin.ttf             
12  serif                      NotoSerif-Regular.ttf       
13  serif-monospace            CutiveMono.ttf              

"mycustomfont.ttf" হল টিটিএফ ফাইল। পথ থাকবে src / সম্পদ / ফন্ট / mycustomfont.ttf , আপনি এই ডিফল্ট ফন্ট সম্পর্কে আরো পাঠাতে পারেন ডিফল্ট ফন্ট পরিবার


13

বিকল্প 1 - এপিআই 26 এবং উচ্চতর

// Jave
Typeface typeface = getResources().getFont(R.font.myfont);
textView.setTypeface(typeface);

// Kotlin
val typeface = resources.getFont(R.font.myfont)
textView.typeface = typeface

বিকল্প 2 - এপিআই 16 এবং উচ্চতর

// Java
Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);

// Kotlin
val typeface = ResourcesCompat.getFont(context, R.font.myfont)

অ্যান্ড্রয়েড বিকাশকারী গাইড এ সম্পূর্ণ কাফফারা পরীক্ষা করুন ।


6

এটি ব্যবহার করে সম্ভব হবে

setTypeface(Typeface tf, int style)TextViewক্লাস পদ্ধতি ।

spinner_text.setTypeface(Typeface.SANS_SERIF,Typeface.NORMAL);

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