2012-06-11 17 views
18

मेरा प्रश्न बहुत आसान है। मैं एंड्रॉइड में एक बटन पर टेक्स्ट कैसे केंद्रित करूं? मैंने 0 तक पैडिंग सेट करने की कोशिश की, गुरुत्वाकर्षण केंद्र पर, नतीजा यह है कि जब भी मैं इसे चलाता हूं तब भी पाठ क्षैतिज केंद्रित होता है लेकिन लंबवत नहीं होता है। पाठ थोड़ा सा नीचे स्थानांतरित किया गया है।केंद्र टेक्स्ट एंड्रॉइड बटन

<Button 
    android:id="@+id/btnSame" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_marginBottom="10dip" 
    android:layout_marginLeft="10dip" 
    android:layout_marginRight="10dip" 
    android:background="@drawable/layout_button_different" 
    android:gravity="center_vertical|center_horizontal" 
    android:height="30dp" 
    android:padding="0dip" 
    android:text="@string/equals" 
    android:textColor="@drawable/layout_button_different" 
    android:textSize="50dp" 
    android:width="70dp" /> 

भी प्रासंगिक हो मेरे में: गतिविधि में मैं यह कर:

btnEquals.setCompoundDrawablesWithIntrinsicBounds(null,getResources().getDrawable(R.drawable.up2), null, null); 
btnEquals.setPadding(0, 5, 0, 0); 
btnEquals.setTextSize(15); 

यह काम करता है, लेकिन इस के बाद मैं इस सेट:

btnEquals.setCompoundDrawables(null, null, null, null); 
btnEquals.setPadding(0, 0, 0, 0); 

परिणाम एक बुरी लंबवत संरेखण है।

उत्तर

12

आपका मौजूदा लेआउट आपके द्वारा चुने गए आकारों के कारण टेक्स्ट को केन्द्रित करने की उम्मीद नहीं कर सकता है। आपने बटन ऊंचाई 30dp पर सेट कर दी है और आपका टेक्स्टसाइज 50dp है, और किसी भी कारण से, एंड्रॉइड उस से निपटने में असमर्थ है और टेक्स्ट को केंद्र में रखता है। यदि आप अपना बटन बड़ा या अपना टेक्स्ट छोटा करते हैं तो आप देखेंगे कि केंद्र काम करता है।

+0

यदि ऊंचाई 30dp है तो क्या 'एंड्रॉयड का प्रयोग होता है: layout_height = "wrap_content" '? –

+0

@hotveryspicy - बटन लेआउट को एक एक्सएमएल में डालें और इसे लोड करें, और आप देखेंगे कि 'wrap_content' इस मामले में पाठ के स्पिल के बारे में परवाह नहीं करता है। मुझे नहीं पता कि ऐसा क्यों होता है, लेकिन ऐसा होता है (कम से कम जब लेआउट के ग्रहण दृश्य दृश्य के माध्यम से देखा जाता है; मैंने इसे किसी डिवाइस पर नहीं रखा)। – mah

+0

धन्यवाद लेकिन एंड्रॉइड को हटा रहा है: layout_height या android: layout_width एक रनटाइम अपवाद में हल हो जाता है। – dieters

-1
<Button 
       android:id="@+id/AnswerE" 
       style="@style/defaultbuttonstyle" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center" 
       android:onClick="AnswerCheck" 
       android:text=" E " 
       android:textStyle="bold" /> 

यह मेरे लिए काम किया

0

तुम भी setPadding में ऋणात्मक संख्याओं का उपयोग कर सकते हैं। यह आपकी मदद कर सकता है यदि आपका फ़ॉन्ट बड़ा है और आपका बटन छोटा है। ऊपर या नीचे एक और नकारात्मक संख्या में सेट करने का प्रयास करें यदि यह अभी भी केंद्र से बाहर है।

1

विचार करने के लिए तीन सिस्टम हैं। एक्सएमएल लेआउट डिजाइनर, सिम्युलेटर, और असली फोन। यदि आप गुरुत्वाकर्षण = "केंद्र" निर्दिष्ट करते हैं तो बटन में पाठ इस तरह दिखेगा। एक्सएमएल लेआउट डिजाइनर में यह बाएंतम अक्षर की तरह दिखेगा बटन के केंद्र में है लेकिन शेष पत्र दाईं ओर हैं। (गलत दिखता है) सिम्युलेटर में, पाठ केंद्र में अच्छी तरह से दिखाता है। (सही) फोन में, पाठ केंद्र में अच्छी तरह से दिखाता है। (सही)

+0

इस उत्तर के लिए धन्यवाद, मैंने 15 मिनट बिताए कि मैं क्या गलत कर रहा था और यह पता चला कि यह सिर्फ 'दिखता है' गलत है –

24

यह बहुत आसान है, आप रखा है इस:

android:textAlignment="gravity" 

यह काम जब आपके पास इस:

android:gravity="center" 
संबंधित मुद्दे