2012-09-05 16 views
25

संभव डुप्लिकेट:
Is it possible to set font for entire Application?एंड्रॉयड - कैसे पूरे एप्लिकेशन के लिए एक कस्टम फ़ॉन्ट स्थापित करने के लिए

मैं पूरी एप्लिकेशन के लिए कस्टम फ़ॉन्ट (प्रारूप .ttf) निर्धारित करने की आवश्यकता है, कैसे कर सकते हैं मैं करता हूं? प्रकट या एक्सएमएल से सबसे अच्छा विकल्प हो सकता है अगर यह संभव है

+0

सिर्फ इसलिए कि यह डुप्लिकेट चिह्नित है, कोई बेहतर जवाब प्रदान नहीं कर सकता: इसे प्राप्त करने के लिए सुलेख लाइब्रेरी का उपयोग करें। यह टोस्ट्स के फ़ॉन्ट को भी बदलता है। – suku

+0

इस टट की जांच करें http://www.gadgetsaint.com/android/custom-fonts-textview-edittext-android/#.WNive2996Hs – ASP

+0

क्या आप अभी https://github.com/chrisjenx/Calligraphy – Fattie

उत्तर

22

संपादित Sept 2014:

अभी भी इस वर्ष भयानक जवाब देखकर किसी के लिए, वास्तविक, अच्छा जवाब यहाँ है:

https://stackoverflow.com/a/16883281/1154026


पुराने:

आपका सबसे अच्छा शर्त यह होगा:

Customize Android Fonts

तो

TextView text = (TextView) findViewById(R.id.custom_font); 
    Typeface font = Typeface.createFromAsset(getAssets(), "yourfont.ttf"); 
    text.setTypeface(font); 

अपने .ttf के साथ "संपत्ति" फ़ोल्डर की जड़ में।

+0

का उपयोग नहीं करेंगे यह काम करता है बढ़िया है, लेकिन अगर मेरे पास सूची दृश्य है तो मैं पंक्ति के फ़ॉन्ट को कैसे बदल सकता हूं? मुझे लगता है कि एक्सएमएल –

+0

के माध्यम से करना संभव है कि यह समाधान अब एंड्रॉइड 5.0 पर कोई अन्य विकल्प काम नहीं कर रहा है? –

+0

@AndreaMarioLufino इस टाइपफेस को अपने एडाप्टर में सभी पाठों को सेट करने के लिए आपको मिलेगा। आइए मान लें कि आपके पास 'टेक्स्टव्यू 1, टेक्स्टव्यू 2' और 'टेक्स्ट व्यू 3' है, इसलिए आपको केवल सेटटाइपफेस (yourfont) का उपयोग करना चाहिए। आशा करता हूँ की ये काम करेगा। – Recomer

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

    tv.setTypeface(face); 

/रेस में फोंट फ़ोल्डर में फ़ॉन्ट फ़ाइल डाल/

मेरा उत्तर जैसा

अगर यह उपयोगी है ...

9

एक TextView उपवर्ग सिक्थ और यह हर जगह का उपयोग

public class RobotoTextView extends TextView { 

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

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

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

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

} 

उपयोग

<com.test.RobotoTextView 
     android:id="@+id/name" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     /> 

जावा कोड में आप इसे TextView को

0

आप TextView विस्तार कर सकते हैं here सुझाव दिया और सेट के रूप में कास्ट कर सकते हैं उस पर अपना टाइपफ़ेस इसे पूरे ऐप में उपयोग करें।

11

आप इसे ऐसा कर सकते हैं। एक कस्टम TextView कि एक हर जगह

public class MyTextView extends android.widget.TextView 
{ 

    public MyTextView(Context context) 
    { 
     this(context, null); 
    } 

    public MyTextView(Context context, AttributeSet attrs) 
    { 
     this(context, attrs, 0); 
    } 

    public MyTextView(Context context, AttributeSet attrs, int defStyle) 
    { 
     super(context, attrs); 
     if (this.isInEditMode()) return ; 

     final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SomeStyle); 
     final String customFont = a.getString(R.styleable.SomeStyle_font); 

     //Build a custom typeface-cache here! 
     this.setTypeface(
      Typeface.createFromAsset(context.getAssets(), customFont) 
     ); 
    } 
} 

जोड़े इस

<declare-styleable name="SomeStyle"> 
    <attr name="font" format="string" /> 
</declare-styleable> 

फिर attrs.xml करने के लिए अपने विषय में बना सकते हैं और उपयोग करते हैं, ऐसा करते हैं: यह सुनिश्चित करें कि सभी textviews शैली का उपयोग करेगा कर देगा MyTextView

<item name="android:textViewStyle">@style/MyTextView</item> 

और अब हम इस शैली में आपकी कस्टम विशेषता का उपयोग करके अपने कस्टम फ़ॉन्ट को परिभाषित कर सकते हैं।

<style name="MyTextView" parent="@android:style/Widget.TextView"> 
    <item name="font">MyPathToFontInAssets.ttf</item> 
</style> 

तो जब भी आप प्रोजेक्ट में MyTextView का उपयोग करते हैं, तो इसका आपका कस्टम फ़ॉन्ट होगा।

महत्वपूर्ण: टाइपफेस कैश नहीं कर रहे हैं, इसलिए यदि आप इस कोड का उपयोग करने की योजना है, तो आप भी एक कस्टम टाइपफेस-कैश ताकि आप सभी textviews के लिए कस्टम टाइपफेस फिर से उपयोग कर सकते हैं का निर्माण करना चाहिए। इससे आवेदन में काफी तेजी आएगी!

अद्यतन: आमिर कह रहे थे के रूप में, यह लगभग Custom fonts and XML layouts (Android) रूप में ही है, लेकिन मैं भी अपने आप ऐप की पूरी textviews पर इसका इस्तेमाल करने एंड्रॉयड स्टाइल का उपयोग करें।

+0

हाय! इस पंक्ति में यह दिखा रहा है कि < @ style/MyTextView '** ए 'प्रकार' विशेषता के लिए आवश्यक है ** अब मुझे क्या करना है? – DroidLearner

+0

मैंने 'टाइप = "स्ट्रिंग" ' – DroidLearner

+0

_Typefaces को कैश नहीं किया है, तो त्रुटियों को मंजूरी दे दी है, इसलिए यदि आप इस कोड का उपयोग करने की योजना बना रहे हैं, तो आपको कैश बनाने के लिए एक कस्टम टाइपफेस-कैश_ बनाना चाहिए? – DroidLearner

संबंधित मुद्दे