2010-07-08 7 views
38

में कस्टम फ़ॉन्ट्स मैंने पहले ही कुछ लेख पढ़े हैं और Google पर खोज की है, लेकिन मैं इसे करने में असफल रहा।एंड्रॉइड

मेरी समस्या फ़ॉन्ट-फेस के बारे में है।

एंड्रॉइड में, "android:typeface" में केवल 4 विशेषताएं हैं: सामान्य, सैन्स, सेरिफ़, मोनोस्पेस।

तो मुझे अपने आवेदन में "वर्दान" का उपयोग करने के लिए क्या करना है?

कृपया मुझे अपने एंड्रॉइड एप्लिकेशन में इस फ़ॉन्ट का उपयोग करने का एक सही तरीका सुझाएं।

+0

इस पोस्ट को चेक करें: [http://stackoverflow.com/questions/2888508/how-to-change-the-font-on-the-text-view-in-android ](http://stackoverflow.com/प्रश्न/2888508/कैसे-टू-चेंज-द-टेक्स्ट-ऑन-द-टेक्स्ट-व्यू-इन-एंड्रॉइड) – Praveen

+0

इसे भी देखें: http://stackoverflow.com/a/14558090/693752 – Snicolas

+0

http://stackoverflow.com/questions/9030204/how-to-use-custom-font-in-android-xml/9035924#9035924 – Vins

उत्तर

76

यह एक साधारण उदाहरण है ... assets/fonts/ नामक अपनी परियोजना की जड़ में एक फ़ोल्डर बनाएं, फिर टीटीएफ फ़ॉन्ट फ़ाइल (इस मामले में Verdana.ttf) पेस्ट करें। फिर, अगर आप को उस फ़ॉन्ट लागू करना चाहते हैं, एक TextView कहते हैं, निम्न करें:

import android.graphics.Typeface; 

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/Verdana.ttf"); 

    tv.setTypeface(face); 
    } 
} 

यह उदाहरण ComonsWare पुस्तक (मार्क मर्फी द्वारा लिखित) से लिया गया है। आप download the full example from GitHub कर सकते हैं।

+6

क्या व्यक्तिगत टेक्स्ट दृश्यों के बजाय सभी टेक्स्ट ऐप को व्यापक रूप से लागू करने का कोई तरीका है? –

+1

क्या आप xml लेआउट के माध्यम से नियंत्रण के लिए फ़ॉन्ट सेट कर सकते हैं? –

+0

हां और नहीं। आप इसे बॉक्स से बाहर नहीं कर सकते ... लेकिन आप ऐसी कार्यक्षमता जोड़ने के लिए 'TextView' बढ़ा सकते हैं। – Cristian

4

आप PixlUI पर https://github.com/neopixl/PixlUI

उनके .jar आयात का उपयोग करें और XML में ठीक से उपयोग कर सकते हैं

<com.neopixl.pixlui.components.textview.TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/hello_world" 
    pixlui:typeface="GearedSlab.ttf" /> 
+0

मैंने आपकी लाइब्रेरी की कोशिश की, लेकिन ऐसा लगता है कि एंड्रॉइड के लिए कोई प्रभाव नहीं है: textStyle = "bold" अगर मैं TextView को TextView में बदलता हूं। (वी 1.0.5) – mrmoment

0
// My example show you how to change fonts into a normal textView or list view 

create a fonts folder into your assets dir of android and copy your custom font in that .. 
assets/fonts/monaco.ttf 

// Font path 
String fontPath = "fonts/monaco.ttf"; 

// Loading Font Face 
Typeface tf = Typeface.createFromAsset(getAssets(), fontPath); 

// CASE 1 : Inside your list view   
holder.name = (TextView) convertView 
       .findViewById(R.id.textView_cityName); 

// set name of text in each row 
holder.name.setText(CitiesNames.get(position)); 

// set the type of font you want to set 
holder.name.setTypeface(tf); 

// CASE 2 : Inside your text view 

TextView tx = (TextView)findViewById(R.id.textview1); 
tx.setTypeface(tf); 

//vKj 
-1
TextView textView = (Textview) findViewById(R.id.mytext); 
Typeface face=Typeface.createFromAsset(getAssets(), 
             "fonts/Verdana.ttf"); 
textView.setTypeFace(face); 
+0

आपने कोड/उत्तर दोबारा क्यों दोहराया? –

2

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

यह लाइब्रेरी वर्डाना फ़ॉन्ट फेस प्रदान नहीं करती है।

लेकिन निम्नलिखित फ़ॉन्ट चेहरे प्रदान करें। आप किस का उपयोग करना चाहेंगे।

  • रोबोटो
  • Droid Serif
  • Droid रोबोट
  • स्वतंत्रता
  • मज़ा उठाने वाले
  • एंड्रॉयड राष्ट्र
  • ग्रीन एवोकैडो
  • मान्यता

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

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

मैं इस पुस्तकालय के लेखक हूँ।

3

अच्छा !!
यह सवाल बहुत पुराना है, लेकिन अभी भी अगर किसी को कैसे एक्सएमएल कोड के माध्यम से सभी Textviews लिए कस्टम फ़ॉन्ट लागू करने के लिए पर जवाब की तलाश में है (2015 में) सीधे नीचे देखें:

पहले:
हम की जरूरत है अपने अनुप्रयोग निर्देशिका के अंदर कस्टम फ़ॉन्ट के अंदर संपत्ति फ़ोल्डर जोड़ने:
.ttf या .otf दोनों काम एंड्रॉयड

के मामले में

दूसरा:
बनाएं कक्षा CustomTextView जो नीचे की तरह TextView लागू होता है:

public class CustomTextView extends TextView { 

public CustomTextView(Context context) { 
    super(context); 
    } 

public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
    } 

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

@Override 
public void setTypeface(Typeface tf) { 
    super.setTypeface(FontCache.getFont(getContext(),"fonts/<font_name>")); 
    } 
} 

तीसरा:
FontCache वर्ग CustomTextView के setTypeface अंदर इस्तेमाल किया जा रहा() method.Purpose HashMap का उपयोग करके बुनियादी फ़ॉन्ट कैशिंग करने के लिए है:

public class FontCache { 

private static Map<String,Typeface> fontMap = new HashMap<String,Typeface>(); 

public static Typeface getFont(Context context,String fontname){ 
    if(fontMap.containsKey(fontname)){ 
     return fontMap.get(fontname); 
     } 
    else{ 
     Typeface tf = Typeface.createFromAsset(context.getAssets(),fontname); 
     fontMap.put(fontname,tf); 
     return tf; 
     } 
    } 
} 

चौथा: [अंतिम चरण] अब हम कस्टम एक्स टेक्स्ट फ़ाइल के अंदर कस्टम एक्सक्स्ट व्यू का उपयोग करते हैं, जहां कस्टम फ़ॉन्ट टेक्स्टव्यू की आवश्यकता होती है:

<<package_name>.CustomTextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Custom Font Text" 
    android:textSize ="18sp" 
    android:textAppearance="?android:textAppearanceSmall" 
    android:id="@+id/custom_txt" 
    /> 

क्षमा करें, अगर यह पहले से ही SO पर पोस्ट किया गया है। बस साझा करने के लिए सोचा अगर यह किसी की मदद करता है !!

1

विश्व स्तर पर अपने अनुप्रयोग के (कस्टम) फ़ॉन्ट बदलने के लिए, बस अपने gradle.build को सुलेख जोड़ सकते हैं और करने के लिए निम्न स्निपेट जोड़ने Calligraphy

पर एक नजर है आपके Application.onCreate():

CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() 
         .setDefaultFontPath("fonts/MyCustomFont.ttf") 
         .setFontAttrId(R.attr.fontPath) 
         .build() 
     ); 

और प्रत्येक गतिविधि में निम्नलिखित जोड़ें:

@Override 
protected void attachBaseContext(Context newBase) { 
    super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); 
} 

आपको अपने ऐप में वैश्विक रूप से फ़ॉन्ट को बदलने के लिए बस इतना करना है। अधिक जानकारी के लिए दस्तावेज़ों पर एक नज़र डालें।

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

  • कोई संबंधित समस्या नहीं^_^