2011-08-30 11 views
6

मेरे पास दो बटन हैं जो मैं क्षैतिज रूप से साइड-साइड दिखाई देना चाहता हूं, लेकिन साथ में वे फोन की क्षैतिज लंबाई भरते हैं। ऊंचाई रैप सामग्री है, यह ठीक है। मेरा मुद्दा अभी यह है कि केवल एक बटन दिखा रहा है (स्क्रीन पर फैला हुआ है)।एंड्रॉइड बटन लेआउट - पूरे स्क्रीन पर दो बटन साइड-बाय-साइड प्राप्त करें

यहाँ मेरी एक्सएमएल कोड है:

<LinearLayout 
    android:id="@+id/page_buttons" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal" 

    > 
    <Button 
     android:id="@+id/prevButton" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Previous" 
    /> 

    <Button 
     android:id="@+id/nextButton" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Next" 
    /> 

+0

स्क्रीन पर दो बटन दिखाई देने की अपेक्षा आप कैसे करते हैं, यह देखते हुए कि आपने xml में केवल एक निर्दिष्ट किया है? क्या आप गतिशील रूप से दूसरा बना रहे हैं और इसे रैखिक लेआउट में जोड़ रहे हैं? – asenovm

+0

मैंने पोस्ट को अब इसे पठनीय बनाने के लिए संपादित किया। – JDS

उत्तर

23

अपने बटन एक्सएमएल बदलें layout_weight विशेषता शामिल करने के लिए:

<Button android:id="@+id/nextButton" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:text="Next"/> 
+0

स्वीकार्य उत्तर के अलावा, मुझे लगता है कि यह इंगित करने योग्य है कि दो बटनों को लपेटने वाले रैखिक लेआउट में विकल्प 'एंड्रॉइड: ओरिएंटेशन = "क्षैतिज" होना चाहिए। मैं धीमा हूं और पहले इसे पकड़ नहीं पाया। – w3bshark

5
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
<Button 
android:id="@+id/button01" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_below="@id/entry" 
android:layout_alignParentLeft="true" 
android:layout_toLeftOf="@+id/space" 
/> 
<TextView 
android:id="@id/space" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_centerHorizontal="true"/> 
<Button 
android:id="@+id/button02" 
android:layout_toRightOf="@id/button01" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_below="@id/entry" 
android:layout_alignParentRight="true" 
/> 
</RelativeLayout> 

लगता है जैसे आप दो बराबर बटन चाहते हैं, नहीं लपेटा सामग्री। मैंने टेक्स्टव्यू का उपयोग करके एक केंद्रित स्पेसर बनाया, और इसके लिए अपेक्षाकृत गठबंधन किया। बाएं बटन को पैरेंट बाएं और स्पेसर, बाएं बटन और दाएं दाएं दाएं बटन पर दायां बटन।

0

आपका आवश्यकता

<LinearLayout 
    android:id="@+id/page_buttons" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 

    > 
    <Button 
     android:id="@+id/prevButton" 
     android:layout_width="0dp" 
     android:weight="0.5" 
     android:layout_height="wrap_content" 
     android:text="Previous" 
    /> 

    <Button 
     android:id="@+id/nextButton" 
     android:layout_width="0dp" 
     android:weight="0.5" 
     android:layout_height="wrap_content" 
     android:text="Next" 
    /> 
0
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true"> 

    <TextView 
     android:text="@+id/SomeText" 
     android:id="@+id/TextView01" 
     android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:background="@android:drawable/bottom_bar" 
     android:paddingLeft="4.0dip" 
     android:paddingTop="5.0dip" 
     android:paddingRight="4.0dip" 
     android:paddingBottom="1.0dip" 
     android:layout_width="fill_parent" android:layout_height="wrap_content" 
     android:layout_below="@+id/TextView01"> 

     <Button 
      android:id="@+id/allow" 
      android:layout_width="0.0dip" android:layout_height="fill_parent" 
      android:text="Allow" 
      android:layout_weight="1.0" /> 

     <Button 
      android:id="@+id/deny" 
      android:layout_width="0.0dip" android:layout_height="fill_parent" 
      android:text="Deny" 
      android:layout_weight="1.0" /> 

    </LinearLayout> 
</RelativeLayout> 
+2

आपको कोड के साथ कुछ स्पष्टीकरण देना चाहिए। –

13

क्यों उनके समाधान काम के बाद से कोई भी नहीं समझा रहा है, मैं इसे जाने दे देंगे।

समस्या बटन के लेआउट में निहित है। दो संबंधित गुण लेआउट_विड्थ और लेआउट_वेट हैं।

अन्य लेआउट सिस्टम में, जब आप इंगित करते हैं कि लेआउट के प्रत्येक तत्व को पैरेंट (लेआउट_विड्थ = "fill_parent") भरना है, तो वे समान रूप से उनके बीच माता-पिता की जगह वितरित करके ऐसा करते हैं। तो, उनमें से प्रत्येक का आकार समान होगा।

इसके बजाय

, एंड्रॉयड के लेआउट प्रणाली में, यदि दोनों तत्वों layout_width = "fill_parent" पहला तत्व है (अपने मामले, पूर्वावलोकन बटन में) माता-पिता और दूसरे को भरने के लिए बढ़ाया जाना जाएगा (या तीसरे , या आदि) वितरित करने के लिए कोई स्थान नहीं छोड़ा जाएगा, इसलिए यह दिखाई नहीं देगा।

अब, यह समझने के लिए कि आप दोनों बटन दिखाना चाहते हैं, आप प्रत्येक बटन के लिए लेआउट_वेट सेट करते हैं। बटन को एक ही आकार बनाने के लिए, दोनों को समान लेआउट वजन सेट करें।

लेआउट_वेट परिभाषित करता है कि प्रत्येक बटन पर पैरेंट के कितने "भाग" (या सेगमेंट) पर कब्जा होता है। माता-पिता को बच्चों के सेगमेंट के योग के बराबर कई सेगमेंट में कटौती की जाएगी। यदि आप एक बटन को तीन बार बड़ा करना चाहते हैं तो दूसरा, आपको इसे पहले बटन के हिस्सों की संख्या के बराबर भागों की संख्या असाइन करना होगा, जो तीन गुणा हो जाएगा।अगला बटन के लिए layout_weight = 1

  • :

    इसलिए यदि आप अपने अगले बटन दो बार तो पूर्वावलोकन बटन बड़ा होना चाहते हैं, तो आप ऐसा कर सकते हैं:

      पूर्वावलोकन बटन के लिए
    • layout_weight = 2

    परिणाम में, माता पिता के 3 भागों, जिनमें से 2 और 1 पिछला के लिए अगला बटन आवंटित किया जाएगा में कटौती होगी दृश्य बटन

    यहां लिया गया उदाहरण बटन और क्षैतिज लेआउट के लिए है, लेकिन यह किसी भी प्रकार की ऑब्जेक्ट के लिए और वर्टिकल लेआउट पेरेंट के लिए भी ठीक काम करेगा।

  • +0

    स्पष्टीकरण के लिए बहुत बहुत धन्यवाद – Joqus

    1

    आपके बटन का अभिभावक रैखिक-लेआउट है, और आप बटन की चौड़ाई को माता-पिता भरने के रूप में सेट कर रहे हैं और इसलिए यह पूरी जगह ले रहा है। आप इसे लागू करने के लिए दो विकल्प हैं ...

    1. अपने बटन (उदाहरण के लिए 50 डीआईपी) के लिए निश्चित चौड़ाई दें।
    2. 0dp के रूप में चौड़ाई दो और दोनों बटन "वजन" में एक और विशेषता डालने और प्रत्येक के लिए 0.5dip दे ...
    1

    दो बटन एक LinearLayout पर होना चाहिए। रैखिक लेआउट क्षैतिज होना चाहिए और प्रत्येक बटन का वजन 1 होना चाहिए। यह आपको स्क्रीन चौड़ाई के साथ बराबर आकार के साथ दो बटन देना चाहिए। एक नमूना यहां है Horizontal orientation: check the 2 Buttons at the end of this xml layout

    0

    मुझे उन लोगों के लिए अग्रणी मुद्दा मिला जो अभी भी वे जो चाहते हैं उसे प्राप्त नहीं करते हैं। अपने पारंपरिक (आउट ऑफ़ द बॉक्स/डिफॉल्ट) पृष्ठभूमि के साथ बटन का उपयोग करते समय, यह मार्जिन में बनाया गया है। यदि आप एक रंग के साथ मैन्युअल रूप से पृष्ठभूमि को बदलने का प्रयास करते हैं, तो आप आसानी से बता सकते हैं कि आपको बस एक अलग पृष्ठभूमि सेट करने की आवश्यकता है। इसके अलावा जब वजन कम हो, तो यह काम करेगा।

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