2013-03-31 7 views
16

मैं इस विषय के बारे में कई पदों मिल गया है, लेकिन या तो इस विषय के सभी एक TextView वस्तु, या जो Roboto और extends के लिए अक्षरों का सेट एक कस्टम वर्ग बनाने पर setTypeFace() विधि के साथ फ़ॉन्ट सेट TextView। जहाँ तक मुझे एपीआई स्तर 11 (?) या कुछ और से पता है, हम एक XML विशेषता, कुछ कैसे के रूप में टाइपफेस सेट करने में सक्षम हैं। इस तरह:स्थापना रोबोटो फॉन्ट - एक्सएमएल

<TextView 
     android:id="@+id/profileHeader" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:typeface="roboto" 
     android:text="Hello, world"> 
    </TextView> 

ऐसा करने का सही तरीका क्या है? (?):

android:typeface="roboto|monospace|serif" 
+0

मुझे नहीं लगता कि डिफ़ॉल्ट टेक्स्ट के अलावा एक्सएमएल से एंड्रॉइड टेक्स्ट व्यू में फोंट सेट करने का कोई तरीका है। – Milan

उत्तर

6

RobotoTextView परियोजना पर एक नजर डालें। एंड्रॉइड 1.5 पर काम करता है, और आप एक्सएमएल विशेषताओं का उपयोग कर टाइपफेस सेट कर सकते हैं। इसमें रोबोटो बटन, रोबोटो चेकबॉक्स, आदि जैसे अन्य विचार भी शामिल हैं।

1

मैं एक तरह से आप एक xml विशेषता के रूप में एक बाहरी टाइपफेस परिभाषित कर सकते हैं नहीं दिख रहा है यह अगर आवेदन एक डिवाइस एपीआई स्तर 11 की तरह कुछ की तुलना में कम पर चलता है फ़ॉलबैक करना संभव है। आप संपत्ति में अक्षर की आकृति की दुकान और फोन करना चाहिए:

tv.setTypeface(Typeface.createFromAsset(context.getAssets(), roboto.ttf)); 
1

आप फ़ॉन्ट सीधे संपत्ति से निर्धारित नहीं कर सकते इस तरह आप के रूप में onCreate में पालन करना है। यह वही काम करेगा जो आप करना चाहते हैं।

TextView tvTextView = (TextView) findViewById(R.id.textView1); 
Typeface typeface = Typeface.createFromAsset(getAssets(),"Roboto.ttf"); 
tvTextView.setTypeface(typeface); 

आशा है कि यह मदद से आप out.:D

1

android:typeface विशेषता केवल कुछ ही मान्य विकल्प (एंड्रॉयड डॉक्स के अनुसार) है ...

  • सामान्य
  • बिना
  • सेरिफ़
  • मोनोस्पेस

आप पुराने उपकरणों के लिए अपने अनुप्रयोग में रोबोटो फॉन्ट की जरूरत है, तो आप अपने प्रोजेक्ट में रोबोटो टीटीएफ फ़ाइलों को शामिल करने की जरूरत है।

इन फ़ॉन्ट्स का उपयोग करने का सबसे स्पष्ट तरीका टेक्स्ट व्यू के setTypeface() विधि का उपयोग करना है, लेकिन यदि आप इसे एक्सएमएल में निर्दिष्ट करना चाहते हैं, तो आपको एक कस्टम टेक्स्ट व्यू बनाना होगा और अपने कस्टम टेक्स्ट व्यू के लिए अपनी खुद की शैली योग्य विशेषता बनाना होगा।

This topic is all over the Internet

1

जेलीबीन (4.1) के लिए आप this StackOverflow topic में प्रदान की गई विधि का उपयोग कर सकते हैं। पुराने उपकरणों में सैन्स के लिए यह शानदार रूप से गिर जाएगी। यदि आपको मोनोस्पेस या सेरिफ़ में फ़ॉलबैक करना होगा, तो फ़ोल्डर लेआउट-वी 16 घोषित करें जहां आप अपने द्वारा चुने गए फ़ॉन्ट का उपयोग करते हैं, यानी "sans-serif-condensed", और डिफ़ॉल्ट फ़ोल्डर में आप "मोनोस्पेस" या "सेरिफ़" फ़ॉन्ट का उपयोग करते हैं । आप एक गैर डिफ़ॉल्ट फ़ॉन्ट पर वापस आने के लिए चाहते हैं, तो आप प्रोग्राम के Android संस्करण यानी जांच कर सकते हैं और उचित कार्रवाई चुनें, .:

if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) { 
    TextView textView = (TextView) findViewById(R.id.textView_id); 
    Typeface myFont = Typeface.createFromAsset(getAssets(),"RobotoCondensed.ttf"); 
    textView.setTypeface(myFont); 
} 
1

यह भविष्य के लोगों के लिए एक ही मुद्दे पर चल रहा है। स्थापना टाइपफेस स्मृति के बहुत ऊपर ले जाने की जब यह कई पंक्तियों लोड हो रहा है के लिए आता है जाता है। वास्तव में इसे आसानी से काम करने के लिए निम्नलिखित दो कोडों का उपयोग करना। मुझे स्टैक ओवरफ्लो से समाधान मिला लेकिन वे जवाब एक साथ सूचीबद्ध नहीं थे।

public class RobotoTextView extends TextView { 

Context context; 

public RobotoTextView(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
    this.context = context; 
} 

public RobotoTextView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    this.context = context; 
} 

public RobotoTextView(Context context) { 
    super(context); 
    this.context = context; 
} 

public void setTypeface(Typeface tf, int style) { 
    if (!isInEditMode()) { 
     if (style == Typeface.NORMAL) { 
      super.setTypeface(TypeFaceProvider.getTypeFace(getContext(), "fonts/Roboto-Light.ttf")); 
     } else if (style == Typeface.ITALIC) { 
      super.setTypeface(TypeFaceProvider.getTypeFace(getContext(), "fonts/Roboto-LightItalic.ttf")); 
     } else if (style == Typeface.BOLD) { 
      super.setTypeface(TypeFaceProvider.getTypeFace(getContext(), "fonts/Roboto-Bold.ttf")); 
     } else if (style == Typeface.BOLD_ITALIC) { 
      super.setTypeface(TypeFaceProvider.getTypeFace(getContext(), "fonts/Roboto-BoldItalic.ttf")); 
     } 

    } 
} 



public class TypeFaceProvider { 

private static Hashtable<String, Typeface> sTypeFaces = new Hashtable<String, Typeface>(
     4); 

public static Typeface getTypeFace(Context context, String fileName) { 
    Typeface tempTypeface = sTypeFaces.get(fileName); 

    if (tempTypeface == null) { 
     tempTypeface = Typeface.createFromAsset(context.getAssets(), 
       fileName); 
     sTypeFaces.put(fileName, tempTypeface); 
    } 

    return tempTypeface; 
} 
} 
संबंधित मुद्दे