2010-04-15 11 views
15

मैं बटन इस प्रकार परिभाषित किया गया है:एंड्रॉइड में बटन पर लंबवत टोप और पाठ को केंद्र कैसे केंद्रित करें?

<Button 
android:drawableTop="@drawable/ico" 
android:gravity="center" 
android:id="@+id/StartButton2x2" 
android:text="@string/Widget2x2StartBtnLabel" 
android:layout_width="0dip" 
android:layout_height="fill_parent" 
android:layout_weight="1" 
android:background="@drawable/widgetbtn_bg" 
/> 

समस्या यह है कि 'drawableTop' छवि बटन दृश्य के शीर्ष सीमा के अनुरूप किया जाता है। मैं बटन पर लंबवत (पाठ लेबल के साथ) को केंद्र में रखना चाहता हूं।

'एंड्रॉइड: गुरुत्वाकर्षण' केवल टेक्स्ट लेबल पर काम करता प्रतीत होता है। यह 'drawableTop' स्थिति को प्रभावित नहीं करता है।

मैं इसे 'एंड्रॉइड: पैडिंगटॉप' का उपयोग करके लंबवत रूप से केंद्र में सक्षम करने में सक्षम था - लेकिन यह एक अच्छा विचार प्रतीत नहीं होता है। मुझे लगता है कि यह अलग-अलग स्क्रीन रिज़ॉल्यूशन/आकार पर ठीक से काम नहीं करेगा।

+0

drawableTop, इसके नाम से पता चलता तरह, हमेशा बटन के शीर्ष करने के drawable संरेखित करता है। इसके बजाय drawableLeft आज़माएं, या यदि आप पाठ के पीछे चाहते हैं, एंड्रॉइड: पृष्ठभूमि। –

उत्तर

12

न्यू जवाब

जाहिर है मैं सवाल गलत समझा।

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    style="@android:style/Widget.Button"> 

... और अंदर एक ImageView और एक TextView संलग्न: जवाब का प्रयोग है।


पुराना जवाब

यहाँ एक विचार है: एक FrameLayout में अपने बटन लपेट दें। Soemthing की तरह:

<FrameLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:foreground="@drawable/ico" 
    android:foregroundGravity="center"> 
    <Button 
     android:gravity="center_vertical" 
     android:id="@+id/StartButton2x2" 
     android:text="@string/Widget2x2StartBtnLabel" 
     android:layout_width="0dip" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:background="@drawable/widgetbtn_bg" /> 
</FrameLayout> 

Btw, ऊपर android:layout_width="0dip" साथ क्या है? सही प्रतीत नहीं होता है।

+0

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

+0

LinearLayout शैली के साथ समाधान बहुत अच्छा काम करता है। – grzaks

+0

@ फ़ेलिक्स, आप 'android: layout_weight' का उपयोग करते समय' android: layout_width = "0dp" 'का उपयोग करते हैं। यह एंड्रॉइड को आकार का पता लगाने के लिए वजन का उपयोग करने के लिए बताता है कि संलग्न लेआउट में कितनी जगह उपलब्ध है। – karl

9

'एंड्रॉयड: गुरुत्वाकर्षण' केवल पाठ लेबल पर काम करने के लिए लगता है। यह 'drawableTop' स्थिति को प्रभावित नहीं करता है।

सही।

मैं इसे खड़ी केंद्र के लिए 'एंड्रॉयड: paddingTop' का उपयोग कर रहा था - लेकिन यह है कि एक अच्छा विचार हो प्रतीत नहीं होता है। मैं अनुमान लगाता हूं कि यह पर अलग-अलग स्क्रीन रिज़ॉल्यूशन/आकार पर ठीक से काम नहीं करेगा।

आप आयाम संसाधनों का उपयोग करके इसे हल करने में सक्षम हो सकते हैं।

हालांकि, पैडिंग के अलावा, आप "बटन खींचने योग्य और बटन पर लंबवत पाठ" नहीं कर सकते हैं। Button की ड्रायबल सुविधा बहुत विन्यास योग्य नहीं है।

+0

ठीक है, तो मैं पैडिंग के साथ कोशिश करूंगा। धन्यवाद – grzaks

+0

SO को सही होने के उत्तर को +1 करने के लिए वास्तव में एक सुविधा की आवश्यकता है, लेकिन -1 उत्तर को नापसंद करने के लिए। – Justin

+0

एंड्रॉइड का उपयोग करना: पैडिंग बटन लेआउट में टोप करने के लिए मेरे लिए वर्चुअल रूप से drawableTop केंद्र पर काम किया। सही उत्तर के लिए +1। –

-2

उपयोग android:drawableTop="@drawable/Icon" पृष्ठभूमि

के बजाय बदलने के लिए

android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
-1
<Button 
    android:id="@+id/....." 
    android:............... 
    ....................... 
    android:gravity="center_horizontal" 
/> 

मैं इसके साथ ठीक था मत भूलना।

0

आप अपनी संपत्ति के साथ टेक्स्टव्यू का उपयोग कर सकते हैं।

<LinearLayout 
      style="@android:style/Widget.Button" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:orientation="vertical" > 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:drawableLeft="@drawable/.." 
       android:text="" /> 
     </LinearLayout> 
संबंधित मुद्दे