2010-11-15 20 views
51

मैं एक संपादन टेक्स्ट के बगल में एक बटन रखना चाहता हूं और मैं उनकी ऊंचाइयों से मेल खाना चाहता हूं।किसी अन्य तत्व की ऊंचाई से मेल खाने के लिए बटन की ऊंचाई कैसे प्राप्त करें?

उदाहरण के लिए

, से Android ब्राउज़र में बनाया गया:

alt text

जाएँ बटन EditText क्षेत्र के रूप में ही ऊंचाई है। मुझे पता है कि मैं इन दोनों विचारों को पैरेंट लेआउट व्यू में लपेट सकता हूं, और अपनी दोनों ऊंचाई को fill_parent पर सेट कर सकता हूं, और इससे उन्हें मेल मिल जाएगा। हालांकि, मैं लेआउट को एक स्थिर आकार देने के बिना ऐसा करना चाहता हूं। मैं एडिटटेक्स्ट को फ़ॉन्ट आकार के आधार पर जो भी ऊंचाई की आवश्यकता होगी, उसके बाद उसके पास वाला बटन जो भी हो सकता है उससे मेल खाता है।

क्या यह एक एक्सएमएल लेआउट के साथ संभव है?

+1

यह सवाल नई ConstraintLayout शामिल करने के लिए अद्यतन करने की जरूरत है। –

उत्तर

27

आपको इसकी ऊंचाई पर EditTextwrap_content बनाने की आवश्यकता होगी और Button केवल fill_parent है। आपको उन्हें Layout अभिभावक में लपेटने की आवश्यकता होगी। इस तरह वे उसी Layout माता-पिता से जुड़े हुए हैं।

कोशिश करें और देखें कि यह कैसे काम करता है, अगर यह मुझे बताए जाने में मदद करता है। अगर ऐसा नहीं होता है तो मैं आपको कुछ कोड दे सकता हूं जो आपकी मदद करेगा।

+0

मदद की पेशकश के लिए धन्यवाद लेकिन फल्मररी का जवाब पूरी तरह से काम करता है इसलिए मैं पूरी तरह से तैयार हूं। एक बार फिर धन्यवाद। – cottonBallPaws

+0

दरअसल, एक रैपर व्यू के बिना ऐसा करने का प्रयास करने के बाद, मैं फल्मररी के जवाब के जवाब में वर्णित मुद्दे के कारण टेक्स्ट को सही तरीके से सही तरीके से लाइन करने में असमर्थ था। अपनी विधि का उपयोग करके मैं बटन आकार और सही ढंग से रखा गया था, इसलिए मैं आपको उत्तर के रूप में चिह्नित करूंगा। – cottonBallPaws

57

संभवतः EditText और ButtonRelativeLayout के अंदर हैं। के बटन के लेआउट विशेषताओं को alignTop और alignBottom पर सेट करें।

+2

यह खूबसूरती से काम करता है और एक रैपर की आवश्यकता नहीं है, बहुत बहुत धन्यवाद। – cottonBallPaws

+2

मैं बटन के बाईं ओर स्थित संपादन टेक्स्ट कैसे प्राप्त करूं? मैंने EditText पर layout_toLeftOf = "बटन की आईडी" का उपयोग करने का प्रयास किया लेकिन चूंकि बटन को XML फ़ाइल में EditText के बाद घोषित किया गया है, इसलिए मुझे एक त्रुटि मिलती है कि बटन की आईडी मौजूद नहीं है। मैं उन्हें उलट नहीं सकता क्योंकि मुझे एक ही समस्या है, बटन आपके द्वारा वर्णित संरेखण के लिए एडिटटेक्स्ट की आईडी का जिक्र कर रहा है। इस से निपटने के तरीके पर कोई सुझाव? धन्यवाद – cottonBallPaws

15

आप जो चाहते हैं वह एक सापेक्ष लेआउट है। कुछ टिप्पणियों के साथ एक उदाहरण निम्नानुसार है

हम इस रिश्तेदार Layout माता-पिता के रूप में शुरू करते हैं। वह सभी सामग्री लपेट सकता है। उस अभिभावक में हमने आपके उदाहरण से 2 तत्व, बटन और संपादन टेक्स्ट डाला।

<?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="fill_parent" > 

हम बटन दाएं कोने पर बटन तत्व डालकर शुरू करते हैं। यही है layout_alignParentRight और layout_alignParentTop सभी के बारे में हैं। फिर यह सबसे बड़ा तत्व है इसलिए हम ऊंचाई और चौड़ाई दोनों के लिए wrap_content का उपयोग करके सभी सामग्री को लपेटने देंगे।

<Button 
    android:id="@+id/Button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:text="some_text" /> 

अब दूसरा तत्व, editText हम, हमारे पिछले तत्व के बाईं ओर संरेखित सिर्फ इतना है कि पूरा करने के लिए layout_toLeftOf पैरामीटर के साथ आईडी संदर्भ का उपयोग करना चाहते।

<EditText 
    android:id="@+id/EditText1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_toLeftOf="@+id/Button1" 
    android:hint="some_hint" 
    android:inputType="textCapWords" /> 

RelativeLayout बंद और अब इस प्रस्तुत करना देखने के लिए क्या आप शायद पहले से ही अपने आप को मिल गया।

</RelativeLayout> 

enter image description here

के बाद से editText ऊंचाई में छोटा होता है यह बटन यह के बगल में रखा से मेल नहीं होगा। इसके लिए समाधान कुछ और लेआउट पैरामीटर जोड़ना है।जिन जादूगरों को आप ढूंढ रहे हैं वे हैं layout_alignBottom और layout_alignParentTop

android:layout_alignBottom="@+id/Button1" 
    android:layout_alignParentTop="true" 

इन 2 को जोड़ें और आपको अपना लेआउट सही मिलता है।

enter image description here

+0

रैखिक लेआउट के लिए काम नहीं करेगा! –

+2

@ फ़ारहान पटेल इसलिए मैं यह कहकर स्पष्टीकरण शुरू करता हूं कि आपको एक सापेक्ष लेआउट की आवश्यकता है ;-) – hcpl

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