2011-07-03 21 views
31

में बदलना मैं कुछ loooong टेक्स्ट को AlertDialog में डालने की कोशिश कर रहा हूं। एकमात्र मुद्दा डिफ़ॉल्ट फ़ॉन्ट आकार जो वास्तव में बहुत बड़ा है, इसलिए मैं इसे छोटा बनाना चाहता हूं।फ़ॉन्ट आकार को AlertDialog

यहां मेरे द्वारा किए गए सभी कामकाज और उनके मुद्दे हैं।

वर्कअराउंड 1) टेक्स्ट व्यू और myView.setTextSize (12) का उपयोग करना;

final TextView myView = new TextView(getApplicationContext()); 
myView.setText(myLongText); 
myView.setTextSize(12); 
final AlertDialog d = new AlertDialog.Builder(context) 
    .setPositiveButton(android.R.string.ok, null) 
.setTitle(myTitle) 
.setView(myView) 
.create(); 

मुद्दे: लेआउट स्क्रॉल नहीं है

वर्कअराउंड 2) TextView स्क्रॉल बना रही है।

message.setMovementMethod(LinkMovementMethod.getInstance()); 

मुद्दे: लेआउट स्क्रॉल है, bute कोई "जड़ता" (कैसे है कि कॉल करने के लिए पता नहीं .. लेकिन मैं आपको यह समझने लगता है।)

वर्कअराउंड 3) का उपयोग करना है एक स्क्रॉलव्यू

है यही कारण है कि मैं कोशिश करने जा रहा हूँ, लेकिन मैं विश्वास नहीं कर सकता कोई आसान समाधान नहीं है ...

उत्तर

85

आप वास्तव में संदेश के TextView के लिए उपयोग बहुत आसानी से प्राप्त कर सकते हैं, और फिर इसे का आकार बदलने के लिए। मैंने एक बड़े आकार के साथ परीक्षण किया, लेकिन आप जो भी आकार चाहते हैं उसका उपयोग कर सकते हैं। पाठ अच्छी तरह से स्क्रॉल करेगा क्योंकि यह पहले से ही करता है। दृश्य की आईडी android.R.id.message है:

AlertDialog dialog = new AlertDialog.Builder(this).setMessage("Hello world").show(); 
    TextView textView = (TextView) dialog.findViewById(android.R.id.message); 
    textView.setTextSize(40); 

यह शायद, एक क्लीनर समाधान है, हालांकि मुझे यकीन है कि वहाँ एक जोखिम TextView अशक्त या नहीं हो सकता है कि अगर नहीं हूँ।

+0

अपने जवाब के लिए धन्यवाद। –

+1

अच्छी तरह से, टेक्स्ट टेक्स्ट व्यू ऑब्जेक्ट शून्य लग रहा है – gaara87

+2

आपको संवाद बनाते समय setMessage() को कॉल करना होगा, अन्यथा पहले स्थान पर कोई संदेश टेक्स्टव्यू नहीं होगा। –

3

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

AlertDialog alertDialog = new AlertDialog.Builder(this).create(); 
String str = getString(R.string.upgrade_notes); 
final ScrollView s_view = new ScrollView(getApplicationContext()); 
final TextView t_view = new TextView(getApplicationContext()); 
t_view.setText(str); 
t_view.setTextSize(14);  
s_view.addView(t_view); 
alertDialog.setTitle("Upgrade notes!"); 
alertDialog.setView(s_view); 
+0

भी मजाक कर रहा है! बहुत धन्यवाद। –

24

मैं निम्नलिखित कोड का उपयोग कर रहा AlertDialog के लिए शीर्षक और संदेश पाठ बदलने के लिए ...

final int alertTitle = ctx.getResources().getIdentifier("alertTitle", "id", "android"); 
setTitleFont((TextView) dlg.findViewById(alertTitle)); 
setBodyFont((TextView) dlg.findViewById(android.R.id.message)); 

... लगता है कि मैं अपने setTitleFont और setBodyFont तरीकों में null के लिए जाँच कर रही है।

+0

यह शीर्षक देखने के लिए काम किया (धन्यवाद!), लेकिन एक बार जब मुझे मिल गया तो मैं केवल दो फोंट सेट कर सकता था: मानक फ़ॉन्ट, और एक छोटा फ़ॉन्ट (मूल्य के लिए 11.0 के साथ)। –

+0

यह मेरे लिए संपत्ति फ़ोल्डर से फ़ॉन्ट को अलर्ट बॉक्स के शीर्षक पर सेट करने के लिए काम करता था। अच्छा था! – jmacedo

+1

बहुत बहुत धन्यवाद! इसका उपयोग करके मैं शीर्षक फ़ॉन्ट आकार को निम्नानुसार बदल सकता था: int alertTitle = context.getResources()। GetIdentifier ("alertTitle", "id", "android"); शीर्षक देखें = dialog.findViewById (alertTitle); यदि (शीर्षक! = Null && शीर्षक उदाहरण टेक्स्टव्यू) { ((टेक्स्ट व्यू) शीर्षक) .setTextSize (14); } –

4

बटन के लिए:

final AlertDialog ad = new AlertDialog.Builder(mainScreen) 
.setPositiveButton("OK", null) 
.setNegativeButton("Cancel", null).create(); 

ad.setOnShowListener(new DialogInterface.OnShowListener() { 
              @Override 
              public void onShow(DialogInterface dialog) { 
               int textSize = (int) Helper.getDimen(mainScreen, R.dimen.textSize12); 
               ad.getButton(Dialog.BUTTON_POSITIVE).setTextSize(textSize); 
               ad.getButton(Dialog.BUTTON_NEGATIVE).setTextSize(textSize); 
              } 


             }); 

ad.show(); 
+0

यह सुनिश्चित नहीं है कि इसे कोई अपवॉट क्यों नहीं मिल रहा है। यह ओपी के प्रत्यक्ष प्रश्न का उत्तर नहीं हो सकता है, लेकिन जैसे ही आप संदेश को बड़ा/छोटा बनाते हैं, तो आप बटन टेक्स्ट को बड़ा बनाना चाहेंगे/छोटा। यह कार्य को पूरा करने के लिए एक अच्छा, प्राकृतिक (ठीक है, कम से कम जावास्क्रिप्ट-वाई) तरीका लगता है अगर इसे रनटाइम पर किया जाना है। मैंने इसे स्वीकार किए गए अच्छे उत्तर (http: // stackoverflow के साथ जोड़ा) .com/a/6563075/165164) और श्रोताओं के अंदर उन दो पंक्तियों को डालें। इसके अलावा, getDimen कॉल से परेशान नहीं है, बस एक आकार सेट करें। विज्ञापन अंतिम घोषित करने के लिए मत भूलना! –

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