2011-08-09 13 views
88

मैं एक्लिप्स इंडिगो का उपयोग कर रहा हूं, 2 अनुकरणकर्ताओं (2.2 और 3.0) पर परीक्षण कर रहा हूं।टेक्स्ट व्यू - टेक्स्ट आकार को प्रोग्रामेटिक रूप से सेट करना प्रतीत नहीं होता है

नीचे दिया गया कोड दिखाता है कि मैं अब क्या परीक्षण कर रहा हूं, हालांकि पाठ आकार को सेट करने से एमुलेटर चलाने की कोशिश करते समय स्क्रीन पर कुछ भी नहीं पता चलता है। (यदि मैं टेक्स्ट आकार को टिप्पणी करता हूं तो पाठ लाल रंग के साथ दिखाई देता है)। मैंने सोचा कि किसी भी तरह ग्रहण कोड का पुनर्निर्माण नहीं कर रहा था, लेकिन मैंने नीली पृष्ठभूमि जोड़ने के लिए कोड की रेखा को जोड़ा और यह काम किया। मैंने पाठ को सेट करने के बाद टेक्स्ट आकार सेट करने का प्रयास किया है, फिर भी सफलता नहीं है। कोड नीचे है। आपकी सहायताके लिए धन्यवाद! (अस्वीकरण) - मैं एक्सएमएल से दूर रहने की कोशिश कर रहा हूं। ऐसा होने के नाते मैं पहले से ही जावा को जानता हूं, मैं उस पर निर्भर नहीं होना चाहता हूं।

import android.app.Activity; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.widget.TextView; 

public class TestAndroidvs2Activity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    TextView text = new TextView(this); 
    text.setTextColor(Color.RED); 
    text.setTextSize(2);  
    text.setBackgroundColor(Color.BLUE); 
    text.setText("Hello Android"); 


    setContentView(text); 
    } 
} 

उत्तर

12

टेक्स्ट आकार 2 व्यावहारिक रूप से अदृश्य होगा। इसे कम से कम 14 के साथ आज़माएं। बीटीडब्ल्यू, एक्सएमएल का उपयोग करने से बहुत सारे फायदे हैं और आपको 'हैलो वर्ल्ड' की तुलना में कुछ और जटिल करने की आवश्यकता होने पर आपके जीवन को आसान बना दिया जाएगा।

+0

मैं इसे 14 के साथ आज़माउंगा। जैसा कि मैंने पहली पोस्ट में कहा था - भले ही 2 बहुत छोटा हो, तो मुझे अपनी स्क्रीन को खाली नहीं करना चाहिए? मुझे लगता है कि मैं इसे आकार को बस सेट करने के बजाय पहले से ही पाठ के अलावा एक पैमाने के रूप में पढ़ रहा था। - मैं देखूंगा लेकिन मैं वैसे भी पूछूंगा - डिफ़ॉल्ट आकार क्या है? कोई बात नहीं धन्यवाद। – cspam

+0

बीटीडब्ल्यू - हाँ मुझे एहसास है कि एक्सएमएल के फायदे हो सकते हैं लेकिन मेरे पास शून्य अनुभव है। हाँ मुझे पता है कि यह सीखना शायद आसान है। जैसा कि मैं पहले से ही जावा से परिचित हूं, मैंने सोचा कि यह वास्तव में जितना संभव हो उतने वर्गों से परिचित होने के लिए उपयोगी होगा। ऐसा लगता है कि एक्सएमएल प्रकार के छिपाने से आपमें से बहुत कुछ छुपाता है। – cspam

+0

यह इसे छिपा नहीं है - यह वही पैरामीटर के साथ एक ही कक्षा है। दोनों के बीच अनुवाद करने में सक्षम होने के लिए कुछ समय लगता है, लेकिन यह वास्तव में काफी कुशल है। बोनस के रूप में, यदि आप एक्सएमएल में विचारों को परिभाषित करते हैं, तो सिस्टम आपके कोड को बदलने की आवश्यकता के बिना, अलग-अलग स्क्रीन आकार, घनत्व और उन्मुखता का ख्याल रखता है, केवल लेआउट फाइलें। –

11

कृपया कोड में पाठ का आकार करने पर और जानकारी के लिए this लिंक देखें। मूल रूप से यह कहते हैं:

सार्वजनिक शून्य setTextSize (पूर्णांक इकाई, नाव आकार)

के बाद से: एपीआई स्तर 1 एक दिया यूनिट और मूल्य के लिए डिफ़ॉल्ट पाठ आकार सेट करें। संभावित आयाम इकाइयों के लिए TypedValue देखें। संबंधित एक्सएमएल गुण

एंड्रॉयड: textSize पैरामीटर

इकाई वांछित आयाम इकाई।
आकार दिए गए इकाइयों में वांछित आकार।

+1

मैं सिर्फ डबल में ग्रहण में जाँच का उपयोग कर मेरा कोड और इंटेलिजेंस के अनुसार मेरे पास वास्तव में सेट टूक्स्टसाइज, सेटटेक्स्ट साइज (फ्लोट साइज), सेटटेक्स्टसाइज (इंट यूनिट, फ्लोट साइज) सेट करने के लिए 2 विकल्प हैं। आपके द्वारा लिंक किए गए दस्तावेज इसकी पुष्टि करते हैं। – cspam

+0

सही - क्या आपने इसे आजमाया? इसके अलावा निकोले कहते हैं कि 2 छोटे से देखने के लिए रास्ता होगा, साथ ही बढ़ने की कोशिश करें। – Jack

+0

हां लेकिन समस्या यह है कि, जब मैं इसे अभी करने का प्रयास करता हूं, तो पाठ भी दिखाई नहीं देता है। यह सिर्फ एक खाली स्क्रीन है। भले ही 2 ध्यान देने योग्य नहीं था, स्क्रीन खाली क्यों है? – cspam

369

विधि TextView.setTextSize(int unit , int size); दो पैरामीटर लेता है।

इस प्रयास करें:

text.setTextSize(TypedValue.COMPLEX_UNIT_SP,14); 

this और this देखें।

public static float pxFromDp(float dp, Context mContext) { 
    return dp * mContext.getResources().getDisplayMetrics().density; 
} 

यहाँ सेट TextView के TextSize प्रोग्राम के:

+20

यह सही उत्तर है। अधिक विशेष रूप से: 'नाव myTextSize = TypedValue.applyDimension (TypedValue.COMPLEX_UNIT_SP, \t \t \t \t 18F, context.getResources() getDisplayMetrics()।);' –

+0

आपको बहुत बहुत धन्यवाद! – DmitryKanunnikoff

6

मेरे मामले में यह विधि प्रयुक्त

textView.setTextSize(pxFromDp(18, YourActivity.this)); 

मजा आ रहा है :)

+0

हाय @ ध्रुव रावल, मैं अपने प्रोजेक्ट में फ़ॉन्ट आकार को समायोजित करने में सक्षम होने के लिए उठा रहा हूं, यदि यह मान 18 किसी भी स्क्रीन घनत्व के लिए मान्य है, या क्या मुझे प्रत्येक स्क्रीन के लिए आयाम बनाना चाहिए? –

39

यह मेरे लिए समस्या का समाधान हो रखें। मुझे सभी उपकरणों में एक समान फ़ॉन्ट आकार मिला।

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.font)); 
+0

क्या R.dimen.font वर्दी संख्या है या आपके पास अलग-अलग उपकरणों के लिए अलग-अलग आकार हैं? –

+0

मेरे मामले में मैंने इन फ़ोल्डर्स में dimen.xml फ़ाइलों में फ़ॉन्ट घोषित किया: मान, मान-sw600dp, मान-sw720dp विशिष्ट मानों के साथ। – Vikas

+0

यह अजीब बात है कि TextView textView.setTextSize (R.dimen.text_size_max) के बाद गायब हो गया, लेकिन आपकी विधि का उपयोग करें, यह काम करता है। – li2

3

वर्तमान में, setTextSize(float size) विधि अच्छी तरह से काम करेंगे तो हम परिवर्तन पाठ आकार के लिए एक और विधि का उपयोग करने की जरूरत नहीं है

/** 
* Set the default text size to the given value, interpreted as "scaled 
* pixel" units. This size is adjusted based on the current density and 
* user font size preference. 
* 
* <p>Note: if this TextView has the auto-size feature enabled than this function is no-op. 
* 
* @param size The scaled pixel size. 
* 
* @attr ref android.R.styleable#TextView_textSize 
*/ 
@android.view.RemotableViewMethod 
public void setTextSize(float size) { 
    setTextSize(TypedValue.COMPLEX_UNIT_SP, size); 
} 

उदाहरण

textView.setTextSize(20); // set your text size = 20sp 
संबंधित मुद्दे