एंड्रॉइड स्टूडियो में लिखे गए प्रोजेक्ट में कस्टम फ़ॉन्ट का उपयोग कैसे करें


192

मैं एंड्रॉइड स्टूडियो में कस्टम फ़ॉन्ट का उपयोग करने की कोशिश कर रहा था जैसा कि हमने ग्रहण में किया था। लेकिन दुर्भाग्य से यह पता नहीं चल सका कि 'एसेट्स' फोल्डर को कहां रखा जाए!


यहां एक आधिकारिक गाइड है जिसे आप देख सकते हैं। डेवलपर
.android.com

जवाबों:


338

अद्यतन 2020:

Res फ़ोल्डर के अंदर एक फॉन्ट नाम का फोल्डर बनाएं और अपने फॉन्ट को कॉपी करें

यहां छवि विवरण दर्ज करें

<TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fontFamily="@font/abc_font" />

प्रोग्राम उपयोग के लिए:

textView.setTypeface(ResourcesCompat.getFont(context, R.font.abc_font))

10
संपत्ति से कस्टम फोंट लोड करने वाले किसी को भी ध्यान देना चाहिए कि एंड्रॉइड 5.0 में एक बग है जहां कुछ फोंट लोड करने में विफल रहते हैं। जबकि यह मुद्दा एंड्रॉइड 5.1 में तय किया गया था, 5.0 का समर्थन करने के लिए एक वैकल्पिक हल टीटीएफ फोंट को फिर से लिखना है। अधिक जानकारी के लिए इस मुद्दे को देखें stackoverflow.com/questions/27269264/…
BrentM

दूसरे विकल्प ने मेरे लिए पूरी तरह से काम किया। इसके लिए धन्यवाद!
13

2
मैं इस का इस्तेमाल किया .getContext ()। getApplicationContext ()। getAssets () निर्देशिका (Android स्टूडियो 2.1) को खोजने के लिए
kuzdu

1
@kuthue onCreate () ठीक है। यदि आप उपयोगकर्ता ऐप का उपयोग करते समय फ़ॉन्ट बदलना चाहते हैं, तो आप इसे उस बिंदु पर रख सकते हैं जिसे आप इसे बदलना चाहते हैं। यह बटन के लिए भी काम करता है
रॉकहैमर

1
मैं कैसे सेट कर सकता हूं कि पूरे प्रोजेक्ट के लिए डिफ़ॉल्ट फ़ॉन्ट वह कस्टम होगा जिसे मैं जोड़ रहा हूं? क्या यह पहला कोड उदाहरण है?
योनातन नीर

97

https://i.stack.imgur.com/i6XNU.png

  1. फ़ाइल> नया> फ़ोल्डर> एसेट्स फ़ोल्डर चुनें

  2. क्लिक करें समाप्त पर

  3. संपत्ति पर राइट क्लिक करें और नामक एक फ़ोल्डर बनाएं फोंट

  4. अपनी फ़ॉन्ट फ़ाइल को संपत्ति में रखें > फ़ॉन्ट में रखें

  5. अपने textView का फ़ॉन्ट बदलने के लिए नीचे दिए गए कोड का उपयोग करें

    TextView textView = (TextView) findViewById(R.id.textView);
    Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/yourfont.ttf");
    textView.setTypeface(typeface);

12
xml में इसका उपयोग कैसे करें?
सुइस

4
यह ट्यूटोरियल एक्सएमएल में इसका उपयोग करने का तरीका देता है: stacktips.com/tutorials/android/…
Dinesh

@ समर्थन को समर्थन लाइब्रेरी 26 एपीआई संस्करण 14 और उच्चतर लिंक
एहसान।

65

कस्टम फ़ॉन्ट परिवार को फ़ील्ड पर सेट करने के कई तरीके हैं और मैं नीचे की तरह उपयोग कर रहा हूं।

संसाधनों के रूप में फ़ॉन्ट जोड़ने के लिए, Android स्टूडियो में निम्न चरणों का पालन करें:

1) Res फ़ोल्डर पर राइट-क्लिक करें और नया> Android संसाधन निर्देशिका पर जाएं। नई संसाधन निर्देशिका विंडो प्रकट होती है।

2) संसाधन प्रकार सूची में, फ़ॉन्ट का चयन करें और फिर ठीक पर क्लिक करें।

नोट: संसाधन निर्देशिका का नाम फ़ॉन्ट होना चाहिए।

3) फ़ॉन्ट फ़ोल्डर में अपनी फ़ॉन्ट फ़ाइलें जोड़ें। यहां छवि विवरण दर्ज करें

अपनी xml फ़ाइल में इच्छित दृश्य में फ़ॉन्ट जोड़ें:

यहां छवि विवरण दर्ज करें

नोट: लेकिन इसके लिए आपको निम्नलिखित चीजों की आवश्यकता है:

  1. 3.0 कैनरी से ऊपर का एंड्रॉइड स्टूडियो।

  2. आपकी गतिविधि AppCompatActivity का विस्तार करती है।

  3. अपनी ग्रेड फ़ाइल को इस तरह अपडेट करें:

    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {        
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

buildtoolsVersion26 से ऊपर और न्यूनतम targetSdkVersion26 आवश्यक

  1. Build.gradle फ़ाइल में निर्भरताएँ जोड़ें:
classpath 'com.android.tools.build:gradle:3.0.0-beta4'
  1. gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

41

मुझे लगता है कि .ttf फ़ाइल डाउनलोड करने के बजाय हम Google फ़ॉन्ट का उपयोग कर सकते हैं। इसे लागू करना बहुत आसान है। केवल आपको इन चरणों का पालन करना होगा। चरण 1) अपनी परियोजना का ओपन लेआउट। xml और विशेषताओं में पाठ दृश्य के चुनिंदा फ़ॉन्ट परिवार (संदर्भ स्क्रीन शॉट के लिए संलग्न है) यहां छवि विवरण दर्ज करें

चरण 2) फ़ॉन्ट परिवार में अधिक फ़ॉन्ट का चयन करें .. विकल्प यदि आपका फ़ॉन्ट नहीं है। फिर आपको एक नई विंडो दिखाई देगी, वहां आप अपना आवश्यक फॉन्ट टाइप कर सकते हैं और उस सूची से वांछित फ़ॉन्ट का चयन कर सकते हैं अर्थात) रेगुलर, बोल्ड, इटैलिक आदि .. जैसा कि नीचे दी गई इमेज में दिखाया गया है। यहां छवि विवरण दर्ज करें

चरण 3) फिर आप देखेंगे कि एक फॉन्ट फ़ोल्डर आपके चयनित फोंट xml फ़ाइल वाले / Res फ़ोल्डर में स्वतः उत्पन्न होगा।

यहां छवि विवरण दर्ज करें

फिर आप इस फ़ॉन्ट परिवार को सीधे xml में उपयोग कर सकते हैं

      android:fontFamily="@font/josefin_sans_bold"

या प्रो व्याकरणिक रूप से आप इसका उपयोग करके प्राप्त कर सकते हैं

  Typeface typeface = ResourcesCompat.getFont(this, R.font.app_font);
  fontText.setTypeface(typeface);

यह सवाल का जवाब नहीं है। हर फ़ॉन्ट Google फ़ॉन्ट्स पर उपलब्ध नहीं है।
मैट फ्लेचर

2
अच्छा उत्तर! यदि आपको सूची में अपना फ़ॉन्ट नहीं मिल रहा है - इसे संपत्ति के फ़ोल्डर में लोड करें या इसे xml के माध्यम से परिभाषित करें
एडगर खिमिच

21

नमस्कार, हमारे पास एंड्रॉइड पर EditTexts और TextViews पर एक बार फोंट लगाने और इसे पूरे प्रोजेक्ट में लागू करने का एक बेहतर तरीका है।

सबसे पहले आपको फोंट फ़ोल्डर बनाने की आवश्यकता है। यहाँ कदम हैं।

1: (प्रोजेक्ट फ़ोल्डर) पर जाएं फिर ऐप> src> main

2: मुख्य फ़ोल्डर में 'एसेट्स / फोंट' नाम के फोल्डर बनाएं।

3: अपने फोंट को फोंट फ़ोल्डर में डालें। यहाँ मैं 'MavenPro-Regular.ttf'

यहां EditText पर कस्टम फोंट लगाने के लिए चरण दिए गए हैं और इस दृष्टिकोण का उपयोग करके आप हर इनपुट पर फोंट लागू कर सकते हैं।

1: एक वर्ग बनाएँ MyEditText (आपका पसंदीदा नाम ...)

2: जो EditText का विस्तार करता है

3: अपना फ़ॉन्ट लागू करें

यहाँ कोड उदाहरण है;

public class MyEditText extends EditText {

    public MyEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    public MyEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public MyEditText(Context context) {
        super(context);
        init();
    }

    private void init() {
        if (!isInEditMode()) {
            Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/MavenPro-Regular.ttf");
            setTypeface(tf);
        }
    }

}

और यहाँ यह कोड है कि इसका उपयोग कैसे करें।

MyEditText editText = (MyEditText) findViewById(R.id.editText);

editText.setText("Hello");

या अपनी xml फ़ाइल में

   <MyEditText
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:textColor="#fff"
    android:textSize="16dp"
    android:id="@+id/editText"
    />

त्रुटि बढ़ा-चढ़ाकर वर्ग MyEditText: यह वर्ग मुझे क्रम पर कि त्रुटि दे दी है
GMX

इस लिंक का संदर्भ लें, आपको कुछ संकेत मिल सकते हैं कि त्रुटि को कैसे हल किया जाए।
मोहम्मद नईम दाहे


वर्तमान बिल्ड के साथ, मुझे लगता है कि आपको इसे "AppCompatEditText का विस्तार" करने की आवश्यकता होगी।
डीजल

15

समर्थन लाइब्रेरी 26.0 (और एंड्रॉइड ओ) फोंट के साथ आसानी से संसाधन से लोड किया जा सकता है: यहां छवि विवरण दर्ज करें

Typeface typeface = ResourcesCompat.getFont(Context context, int fontResourceId) 

विधि के लिए डॉक्स

अधिक जानकारी यहां पाई जा सकती है।


9

मैं Android-O और Android Studio 2.4 के लिए अपना उत्तर जोड़ना चाहता हूं

  1. Res फ़ोल्डर के अंतर्गत फॉन्ट नामक फोल्डर बनाएं । विभिन्न फ़ॉन्ट डाउनलोड करें जिन्हें आप अपने प्रोजेक्ट उदाहरण Google फोंट में जोड़ना चाहते थे

  2. अपने xml उपयोगकर्ता फ़ॉन्ट परिवार के अंदर

    उदाहरण :

    <TextView
        android:fontFamily="@font/indie_flower"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:text="@string/sample_text" />

3. यदि आप चाहते हैं कि यह प्रोग्रामेटिक तरीके से हो तो निम्नलिखित कोड का उपयोग करें

Typeface typeface = getResources().getFont(R.font.indie_flower);
textView.setTypeface(typeface);

अधिक जानकारी के लिए एंड्रॉइड स्टूडियो 2.4 के साथ एंड्रॉइड के लिए मेरे ब्लॉग पोस्ट फ़ॉन्ट शैलियों के लिंक का पालन करें


6
कृपया ध्यान दें कि यदि आप अपने स्वयं के उत्पाद / ब्लॉग को बढ़ावा देना चाहते हैं तो आपको अपनी संबद्धता का खुलासा करना होगा , अन्यथा आपके उत्तर को स्पैम के रूप में चिह्नित किया जा सकता है। कृपया पढ़ें कि स्पैमर कैसे न हो
डेविडपॉस्टिल

हां @PetterFriberg
सुरेश मेडरागी

8

Android O में उपलब्ध नई सुविधा के अनुसार, XML में फ़ॉन्ट संसाधन नई सुविधा के रूप में उपलब्ध हैं।

संसाधनों के रूप में फ़ॉन्ट जोड़ने के लिए, Android स्टूडियो में निम्न चरणों का पालन करें:

1) Res फ़ोल्डर पर राइट-क्लिक करें और नया> Android संसाधन निर्देशिका पर जाएं । नई संसाधन निर्देशिका विंडो प्रकट होती है।

2) संसाधन प्रकार सूची में, फ़ॉन्ट का चयन करें और फिर ठीक पर क्लिक करें।

नोट: संसाधन निर्देशिका का नाम फ़ॉन्ट होना चाहिए।

3) फ़ॉन्ट फ़ोल्डर में अपनी फ़ॉन्ट फ़ाइलें जोड़ें।

आप नए संसाधन प्रकार, फ़ॉन्ट की सहायता से फ़ॉन्ट संसाधनों तक पहुँच सकते हैं। उदाहरण के लिए, फ़ॉन्ट संसाधन तक पहुँचने के लिए, @ फ़ॉन्ट / myfont, या R.font.myfont का उपयोग करें।

जैसे। Typeface typeface = getResources().getFont(R.font.myfont); textView.setTypeface(typeface);


2
ResourcesCompat.getFont (संदर्भ, R.font.your_font) होना चाहिए
Trung Le

7

आप कस्टम फ़ॉन्ट की विविधता सेट करने के लिए आसान और सरल इज़ीफोन्स थर्ड पार्टी लाइब्रेरी का उपयोग कर सकते हैंTextView । इस लाइब्रेरी का उपयोग करके आपको एसेट्स / फोंट फ़ोल्डर में फोंट डाउनलोड करने और जोड़ने की चिंता नहीं करनी चाहिए। टाइपफेस ऑब्जेक्ट निर्माण के बारे में भी। आप एसेट फोल्डर बनाने से भी मुक्त रहेंगे।

सीधे शब्दों में:

TextView myTextView = (TextView)findViewById(R.id.myTextView);
myTextView.setTypeface(EasyFonts.robotoThin(this));

इस लाइब्रेरी द्वारा कई प्रकार के फोंट उपलब्ध कराए गए हैं।


6

1 फ़ॉन्ट फ़ॉन्ट फ़ोल्डर पर font.ttf फ़ाइल जोड़ें। फिर इस लाइन को ऑनक्रिट विधि में जोड़ें

    Typeface typeface = ResourcesCompat.getFont(getApplicationContext(), R.font.myfont);
    mytextView.setTypeface(typeface);

और यहाँ मेरा xml है

            <TextView
            android:id="@+id/idtext1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="7dp"
            android:gravity="center"
            android:text="My Text"
            android:textColor="#000"
            android:textSize="10sp"
        />

4
  1. प्रोजेक्ट -> एप्लिकेशन (या आपके ऐप का नाम) -> src -> मुख्य -> ​​राइट क्लिक -> नई -> निर्देशिका में फ़ोल्डर की संपत्ति बनाएँ।
  2. फिर "फोंट" नामक संपत्ति के अंदर एक नई निर्देशिका बनाएं।

टेक्स्ट व्यू को फ़ॉन्ट असाइन करने के लिए:

TextView textView = (TextView) findViewById(R.id.your_textView);

final Typeface font = Typeface.createFromAsset(context.getAssets(), "fonts/your_font_name");

your_font_name में फ़ॉन्ट एक्सटेंशन शामिल है।


3

यदि आप Android के लिए बहुत नए हैं जैसे मैं हूँ तो यह थोड़ा मुश्किल हो सकता है। सुनिश्चित करें कि आप कॉल करें:

TextView myTextView = (TextView) findViewById(R.id.textView);
Typeface typeface=Typeface.createFromAsset(getAssets(), "fonts/your font.ttf");
myTextView.setTypeface(typeface);

एक विधि के भीतर विधि जैसे onCreate


3

एंड्रॉइड 8.0 (एपीआई 26) ने फोंट से संबंधित नई सुविधाओं को पेश किया।

1) फ़ॉन्ट्स का उपयोग संसाधनों के रूप में किया जा सकता है।

2) डाउनलोड करने योग्य फोंट।

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

एपीके में फॉन्ट फाइल्स को शामिल करना : आप फॉन्ट फाइल्स डाउनलोड कर सकते हैं, उन्हें रेस / फॉन्ट फाइलर में सेव कर सकते हैं, फॉन्ट फैमिली को डिफाइन कर सकते हैं और फॉन्ट फैमिली को स्टाइल में इस्तेमाल कर सकते हैं।

कस्टम फोंट का उपयोग करने के बारे में अधिक जानकारी के लिए संसाधन देखें http://www.zoftino.com/android-use-custom-fonts

डाउनलोड करने योग्य फ़ॉन्ट कॉन्फ़िगर करना : फ़ॉन्ट प्रदाता विवरण प्रदान करके फ़ॉन्ट को परिभाषित करें, फ़ॉन्ट प्रदाता प्रमाणपत्र जोड़ें और शैलियों में फ़ॉन्ट का उपयोग करें।

डाउनलोड करने योग्य फोंट पर अधिक जानकारी के लिए http://www.zoftino.com/downloading-fonts-android देखें


2
आधिकारिक दस्तावेज: developer.android.com/guide/topics/ui/look-and-feel/…
पारिजिपाल

1
इसके अलावा, सिर्फ इसलिए कि एंड्रॉइड O (8.0) में कस्टम / डाउनलोड करने योग्य फ़ॉन्ट पेश किए गए थे, इसका मतलब यह नहीं है कि इसके लिए कोई पीछे की संगतता नहीं है। कृपया कस्टम फ़ॉन्ट्स को लागू करने के बारे में आधिकारिक दस्तावेज देखें। कृपया ध्यान दें कि आपको एंड्रॉइड स्टूडियो 3.0 स्थापित करने की आवश्यकता हो सकती है।
एंथनोनिमोरी

1

पहले assetsफोल्डर बनाएं फिर fontsउसमें फोल्डर बनाएं ।

तब आप bellow fontसे assetsया directoryजैसे सेट कर सकते हैं :

public class FontSampler extends Activity {
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);

        TextView tv = (TextView) findViewById(R.id.custom);
        Typeface face = Typeface.createFromAsset(getAssets(), "fonts/HandmadeTypewriter.ttf");

        tv.setTypeface(face);

        File font = new File(Environment.getExternalStorageDirectory(), "MgOpenCosmeticaBold.ttf");

        if (font.exists()) {
            tv = (TextView) findViewById(R.id.file);
            face = Typeface.createFromFile(font);

            tv.setTypeface(face);
        } else {
            findViewById(R.id.filerow).setVisibility(View.GONE);
        }
    }
} 

1

अब फ़ॉन्ट को सबसे आसान तरीके से लागू करने के लिए बहुत सारे तरीके हैं, 1) इस तरह रेज फ़ोल्डर को नया> Android संसाधन निर्देशिका पर राइट-क्लिक करें।

2) संसाधन प्रकार सूची से, फ़ॉन्ट का चयन करें और फिर ठीक पर क्लिक करें।

3) अपनी फॉन्ट फाइल्स को फॉन्ट फोल्डर में रखें।


1

ऐप में अपने फोन्स को एसेट फोल्डर में जोड़ें / src / main / आस्तियों को इस तरह एक कस्टम टेक्स्टव्यू बनाएं:

class CustomLightTextView : TextView {

constructor(context: Context) : super(context){
    attachFont(context)
}
constructor(context: Context, attrs: AttributeSet):    super(context, attrs){
    attachFont(context)
}
constructor(context: Context, attrs: AttributeSet?,    defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
    attachFont(context)
}
fun attachFont(context: Context) {
    this.setTypeface(FontCache.getInstance().getLightFont(context))
}

}

FontCache जोड़ें: ताकि आपको बार-बार टाइपफेस बनाने की जरूरत न पड़े:

class FontCache private constructor(){

val fontMap = HashMap<String,Typeface>()

companion object {
    private var mInstance : FontCache?=null
    fun getInstance():FontCache = mInstance?: synchronized(this){
        return mInstance?:FontCache().also { mInstance=it }
    }
}

fun getLightFont(context: Context):Typeface?{
    if(!fontMap.containsKey("light")){
        Typeface.createFromAsset(context.getAssets(),"Gotham-Book.otf");
        fontMap.put("light",Typeface.createFromAsset(context.getAssets(),"Gotham-Book.otf"))
    }
    return fontMap.get("light")
}

}

और आप कर रहे हैं!

PSFrom Android O, आप सीधे फोंट जोड़ सकते हैं।


1

फॉन्ट को एसेट फोल्डर में रखें, फिर फॉन्टफिली को लागू करें: '' अपने फोंट


-1

नए पाठकों के लिए

आप इस पुस्तकालय का उपयोग कर सकते हैं Gloxey Custom Font Views का

धीरे-धीरे निर्भरता

  dependencies{
           compile 'io.gloxey.cfv:custom-font-views:1.0.2'
    }

कैसे इस्तेमाल करे?

फ़ोल्डर की संपत्ति बनाएं -> फोंट । अपने फोंट को फोंट फ़ोल्डर में कॉपी करें ।

प्रॉपर्टी ऐप का उपयोग करें : फॉन्ट को लागू करने के लिए font_name = "font_name_string"

उदाहरण

   <!--Font Names in srings.xml-->
       <string name="aadhunik">aadhunik.ttf</string>
       <string name="kung_fool">kungfool.ttf</string>
       <string name="skrova">skrova.otf</string>
       <string name="painting_in_the_sun_light">painting_in_the_sun_light.ttf</string>

   <!--Include views in layout.xml-->
       <io.gloxey.cfv.CFTextView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:gravity="center"
       android:text="Aadhunik"
       android:textColor="#ff00"
       android:textSize="40sp"
       app:font_name="@string/aadhunik" />

       <io.gloxey.cfv.CFButton
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="Kung Fool"
       android:textColor="#154748"
       app:font_name="@string/kung_fool" />

       <io.gloxey.cfv.CFEditText
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:gravity="center"
       android:text="Hello world"
       android:textSize="30sp"
       app:font_name="@string/skrova" />

       <io.gloxey.cfv.CFCheckBox
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:text="Painting In The Sun Light"
       android:textSize="30sp"
       app:font_name="@string/painting_in_the_sun_light" />
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.