2013-04-29 2 views
45

में टेक्स्टव्यू टेक्स्ट एपपेरेंस प्रोग्रामेटिक रूप से सेट करना मैं LinearLayout लागू करने जा रहा हूं जिसमें इनपुट फ़ील्ड डेटाबेस तालिका के फ़ील्ड की संख्या के अनुसार प्रोग्रामेटिक रूप से जेनरेट की जाती हैं।एंड्रॉइड

दुर्भाग्यवश, जब मैं विशेषता सेट करने का प्रयास कर रहा हूं: textApperanceTextView में, यह काम नहीं करता है। नीचे मेरा कोड है ...

for (int i = 0; i < selectedProducts; i++) { 

      premLayout[i] = new LinearLayout(this); 
      premLayout[i].setLayoutParams(new LinearLayout.LayoutParams(
        LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
      premLayout[i].setOrientation(LinearLayout.HORIZONTAL); 
      premLayout[i].setGravity(Gravity.TOP); 

      premTextView[i] = new TextView(this); 
      premTextView[i].setLayoutParams(new LinearLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 
        2.0f)); 
      premTextView[i].setTextAppearance(this, android.R.attr.textAppearanceLarge); 

      premTextView[i].setText(premiumChannels.get(i)); 
      premTextView[i].setId(i + 600); 

      int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 20, getResources().getDisplayMetrics()); 
      premTextView[i].setWidth(px); 

      premLayout[i].addView(premTextView[i]); 
+0

काम नहीं करके, मुझे लगता है कि आपका मतलब है कि पाठ सिर्फ "सामान्य आकार" है? – HalR

+0

डिफ़ॉल्ट आकार TextAppearanceSmall है ... लेकिन मैं सेट करना चाहता हूं ... TextAppearanceLarge। –

+0

आप अपनी खुद की टेक्स्ट उपस्थिति विशेषता बना रहे हैं या आप एंड्रॉइड से उपयोग कर रहे हैं। अपने कोड में आप एंड्रॉइड से उपयोग कर रहे हैं। – Unknown

उत्तर

153

इस तरह का उपयोग करें। यह काम करेगा।

textView.setTextAppearance(this, android.R.style.TextAppearance_Large); 

या, एपीआई 23 के बाद से, आपको एक संदर्भ पारित करने की आवश्यकता नहीं है। इसलिए, आप बस फोन कर सकते हैं:

textView.setTextAppearance(android.R.style.TextAppearance_Large); 

आप कम एक के रूप में एपीआई 23 या इससे अधिक का समर्थन करने के साथ ही चाहते हैं, आप अपने कार्य को आसान बनाने के लिए नीचे दी गई विधि का उपयोग कर सकते हैं। नीचे दी गई विधि का उपयोग केवल तभी करें जब आप पहले ही एपीआई 23 या उच्चतर को लक्षित कर रहे हैं। यदि आप लक्ष्यीकरण API को 23 से कम कर रहे हैं, तो नीचे दिया गया कोड त्रुटि देगा क्योंकि नई विधि इसमें उपलब्ध नहीं थी।

public void setTextAppearance(Context context, int resId) { 
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { 
     super.setTextAppearance(context, resId); 
    } else { 
     super.setTextAppearance(resId); 
    } 
} 
+3

आपको बहुत बहुत धन्यवाद! यह काम करता हैं ! हम एंड्रॉइड.R.attr.textAppearanceLarge का उपयोग एंड्रॉइड.R.style.TextAppearance_Large के बजाय कब करेंगे? –

+0

@RajuGurig: 'android.R.attr.textAppearanceLarge' एक विशेषता है जो वर्तमान थीम के लिए शैली का उपयोग करने के लिए सेट करती है। कस्टम थीम का उपयोग करते समय आप इसे कोई मूल्य दे सकते हैं। 'android.R.style.TextAppearance_Large' एक शैली है, और इस मामले में यह डिफ़ॉल्ट थीम के लिए, एटीआर पर मान सेट होता है। – njzk2

+0

यह विधि API स्तर 23 में बहिष्कृत की गई थी। API 23+ में इसके बजाय setTextAppearance (int) का उपयोग करें। – Sergii