2012-01-27 27 views
15

पर Android 4.0 (आइस क्रीम सैंडविच) प्रतिपादन Android 4.0 पर इसका प्राथमिक फ़ॉन्ट के रूप में Helvetica Neue का उपयोग करता है मैं पाया है टाइपफेस में असंगतता एंड्रॉयड के कई अलग अलग संस्करण की तुलना में प्रदर्शित हो रहा है कि वहाँ एक आवेदन का परीक्षण करते हुए फॉन्ट। हमने 2.1, 2.2.2, 2.3.5, 3.2, 4.0, और 4.0.3 पर हर बार एक ही परिणाम के साथ इसका परीक्षण किया। हमने इन परीक्षणों को एक ही परिणाम के साथ विभिन्न टाइपफेस बाइनरी के साथ भी किया।कस्टम

कोई इनपुट या कामकाज की सराहना की जाएगी।

नीचे अवांछित परिणाम दिखाने के लिए एक उदाहरण के आवेदन से एक स्क्रीनशॉट, पहले 2.3.5 दूसरा 4.0.3 है है।

2.3.5

4.0.3

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    TextView textView = new TextView(this); 
    textView.setText("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."); 
    textView.setTypeface(Typeface.createFromAsset(getAssets(), "Helvetica Neue.ttf")); 
    textView.setTextSize(9); 
    setContentView(textView); 
} 
+0

शायद डिफ़ॉल्ट फ़ॉन्ट आकार (या अन्य TextView गुण) प्रत्येक के लिए अलग है? शायद आपको इसे मैन्युअल रूप से सेट करना होगा? – Oli

+0

यह केवल एक उदाहरण है जो उपरोक्त प्रदर्शित होता है, उत्पादन अनुप्रयोग में हम कई अलग-अलग शैलियों का उपयोग कर रहे हैं और टेक्स्टव्यू विशेषता एक ही परिणाम के साथ ओवरराइड करते हैं। – HandlerExploit

+0

पीएक्स मूल्यों का उपयोग करते समय वही व्यवहार देखा जाएगा? यह एंड्रॉइड ऑटो स्केल के साथ कुछ हो सकता है। – Warpzit

उत्तर

8

हालांकि हम कभी नहीं Helvetica प्रतिपादन बग हम रोबोटो करने के लिए स्विच करने के लिए ग्राहक को समझाने के लिए सक्षम थे के लिए एक समाधान पाया के बाद हम उन्हें एक आकाशगंगा पर बग से पता चला नेक्सस।


अद्यतन:

public class TextViewCompat extends TextView { 

    public TextViewCompat(Context context) { 
     super(context); 
     setup(context, null, 0); 
    } 

    public TextViewCompat(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     setup(context, attrs, 0); 
    } 

    public TextViewCompat(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     setup(context, attrs, defStyle); 
    } 

    private void setup(Context context, AttributeSet attrs, int defStyle) { 
     setPaintFlags(getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG); 
    } 
} 
+0

क्या यह अद्यतन कोड नमूना आपके लिए समस्या को ठीक करता है? – Peterdk

+0

@ पीटरडेक हां, यही कारण है कि मैंने इसे पोस्ट किया। – HandlerExploit

-2

आईसीएस v14 + यहां पाया रोबोटो फ़ॉन्ट का उपयोग करता: Android design

यह बेहतर होगा अगर आप इसे भर में एक ही प्रदर्शित करना चाहते हैं मैन्युअल रूप से टाइप फेस स्थापित करने के लिए सभी संस्करण।

Typeface mBoldType = Typeface.createFromAsset(getAssets(), "fonts/Roboto-Bold.ttf"); 
TextView mTextView = findById(R.id.text1); 
mTextView.setTypeface(mBoldType); 

दुर्भाग्य से वहाँ कोई त्वरित तरीका कस्टम फोंट के लिए एक्सएमएल में यह करने के लिए है, लेकिन एक ठीक से programed सहायक वर्ग आपको क्या चाहिए करना चाहिए।

यदि आपको एक उदाहरण समारोह की आवश्यकता है तो मुझे बताएं।

क्या ध्यान दिया जाना चाहिए, कि यदि आप एक कस्टम टाइपफेस, एंड्रॉयड की तरह चीजों को सेट है: fontStyle काम नहीं करेगा, यानी, आप एक बोल्ड टाइपफ़ेस की जरूरत है, इटैलिक टाइपफेस आदि ..

+7

यह मेरे प्रश्न का उत्तर नहीं देता है, इसे पढ़ें। – HandlerExploit

0

जोड़े फ़ॉन्ट प्रकार ttf संपत्ति फ़ोल्डर में फ़ाइल, फिर नीचे कोड

टाइपफेस टीएफ = Typeface.createFromAsset (getBaseContext()। getAssets(), "हेल्वेतिका.एटीएफ");

तो

textobjext.setTypeface(tf, Typeface.BOLD); 
+0

बस ध्यान दें, अगर टाइपफेस में इन स्टाइल बिट्स की कमी है, तो यह शैली नकली होगी, जिससे विभिन्न उपकरणों पर विसंगतियां हो सकती हैं। या तो सुनिश्चित करें कि आपके पास सभी शैलियों के साथ टाइपफ़ेस है, या एक tfBold, tfItalic आदि है ... –

+0

यह मेरे प्रश्न का उत्तर नहीं देता है, इसे पढ़ें। – HandlerExploit

0

नीचे के रूप में पाठ को देखने के लिए tf वस्तु जोड़ने खेल रहे कुछ और मैं पुन: पेश करने तुम क्या देखते समर्थ हुए के बाद।

मुझे बिक्रीसूत्र विश्वास है कि फॉन्ट का प्रयोग कर रहे खराब है।

मैं अपने सभी टाइपफेस सेट मेरे अन्य जवाब के अनुसार, यह मेरे लिए ठीक काम करता है, स्क्रीन देखें:

तो शीर्ष पाठ रोबोटो-सामान्य है तो नीचे दिए गए पाठ रोबोटो लाइट, बनाने के लिए है <b></b> साथ यह मजबूत

तो 3 संस्करणों, 3 अलग स्क्रीन आकार, दो घनत्व, मैन्युअल रूप से सेट टाइपफ़ेस। एक ही प्रतिपादन। सुनिश्चित नहीं है कि आपका क्या देख रहा है। क्या आपने एक अलग टाइपफेस के साथ प्रयास किया है?

मैं कुछ और उदाहरण प्रदान करूंगा जो मैं कर रहा हूं अगर इससे मदद मिल सकती है?

Android 2.2

Android 2.3

Android 4.0.3

+1

और हाँ मुझे पता है कि कुछ टाइपो हैं :) –

+1

प्रश्न हेल्वैटिका के लिए विशिष्ट है, रोबोटो विशेष रूप से मोबाइल उपकरणों के लिए बनाया गया था। – HandlerExploit