2012-02-19 26 views
9

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

जन्म:: 23 अगस्त 1810 मेसन कं, केंटकी

मृत्यु: 15 जुला 1865 सिनसिनाटी, हैमिल्टन कं, ओहियो

यह लेआउट के संबंधित भाग है:

यह कुछ ऐसा दिखाई देगा
 <TextView android:id="@+id/birth_lbl" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/given_layout" 
      android:layout_alignLeft="@+id/given_layout" 
      android:layout_marginTop="6dip" 
      style="@style/label" 
      android:text="@string/born" 
     /> 
     <TextView android:id="@+id/birth" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_toRightOf="@+id/birth_lbl" 
      android:layout_alignBaseline="@+id/birth_lbl" 
      android:layout_marginLeft="10dip" 
      android:layout_marginRight="6dip" 
      style="@style/main_text" 
      android:text="dd Mmm yy" 
     /> 
     <TextView android:id="@+id/death_lbl" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/birth" 
      android:layout_alignLeft="@+id/birth_lbl" 
      android:layout_marginTop="4dip" 
      style="@style/label" 
      android:text="@string/died" 
     /> 
     <TextView android:id="@+id/death" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_toRightOf="@+id/death_lbl" 
      android:layout_alignLeft="@+id/birth" 
      android:layout_alignBaseline="@+id/death_lbl" 
      android:layout_marginRight="6dip" 
      style="@style/main_text" 
      android:text="dd Mmm yy" 
     /> 

किसी कारण से, यह जन्म रेखा के विचारों के ऊपर मृत्यु रेखा के विचार प्रदर्शित करता है! अगर मैं death_lbl व्यू के spec को 'layout_below = "@ + id/birth_lbl" के रूप में बदलता हूं, तो रेखाएं सही ढंग से स्थित होती हैं! हालांकि, "जन्म" दृश्य के लिए कई लाइनों को लपेटना संभव है, इसलिए मुझे वास्तव में "जन्म" के नीचे दूसरी पंक्ति को "जन्म_एलबीएल" की स्थिति में रखना होगा।

कोई भी इस व्यवहार के कारण को जानता है? यह एक्लिप्स में ग्राफिकल लेआउट एडिटर और एंड्रॉइड 4.0 चलाने वाले मेरे टैबलेट पर रनटाइम पर होता है।

+1

'आईडी' घोषणा में '+' चिह्न 'आईडी' की पहली उपस्थिति पर ही उपयोग किया जाना चाहिए। आपके द्वारा उपयोग किए जाने वाले अतिरिक्त दृश्य देखने के लिए आपको पूर्ण लेआउट फ़ाइल को संपादित और पोस्ट करना चाहिए ('given_layout'?)।मैंने इसे एमुलेटर में करने की कोशिश की और मेरे लिए यह काम कर रहा है, लेकिन निश्चित रूप से मेरे पास अतिरिक्त 'given_layout' दृश्य नहीं है। – Luksprog

+0

इसकी वजह से, जैसा कि स्लुकियन ने कहा था, आप यह भी नहीं जानते कि आप क्या कर रहे हैं ... जहां चाहें '+' का उपयोग करना बंद करें और यह सोचने का प्रयास करें कि आपके पास + एक नया चर बनाने जैसा है ... यह भी सुंदर है अजीब बात है कि संकलक उस पर एक शब्द नहीं कहता है ... – Cehm

+2

अधिक धीरे से यहाँ! जब आप "डिज़ाइन" का उपयोग करते हैं तो एंड्रॉइड 21 कंपाइलर इन प्लस को रखता है। सवाल पूछने का कारण यह है कि, जैसा कि आप कहते हैं, हम नहीं जानते। – user462990

उत्तर

13

कोशिश android:layout_below="@id/birth" को death_lbl में android:layout_below="@+id/birth" बदल रहा है, क्योंकि इस बिंदु पर यह पहले से ही घोषित किया जाता है, जो + का तात्पर्य है, यह जब यह फिर से घोषित समस्याओं को जन्म दे सकता है।

+0

धन्यवाद। मैं वास्तव में जानता था कि और आपने जो नमूना कोड में देखा वह कुछ था जो मैंने निराशा में किया था :-)। मैंने इसे उसी परिणाम के साथ वापस रख दिया। – gordonwd

+0

लेकिन जब मैं ऐसा करता हूं, यह काम नहीं करता है और जब + डालता है, यह काम है! क्यों? –

0

आपकी समस्या यह है कि आप रिश्तेदार लेआउट पर गुणों को कॉल कर रहे हैं जैसे कि आप इसे फिर से घोषित कर रहे हैं।

जब आप दृश्य तो यह इस android:id="@+id/button" और तरह से किया जाना चाहिए के लिए एक आईडी की घोषणा तो आपके द्वारा Android के ऊपर या नीचे किसी अन्य दृश्य उस विशेष दृश्य स्थिति एक रिश्तेदार लेआउट में चाहते हैं आप इसे इस android:layout_below="@id/textview"

की तरह कॉल करनी होगी

यह एंड्रॉइड को बताता है कि आपने आईडी बटन वाला बटन घोषित किया है और इसे टेक्स्टव्यू के नीचे स्थित करना चाहते हैं, याद रखें कि @+id का उपयोग पोस्टियन व्यू @id के बजाय @+id का उपयोग न करें।

+0

ऊपर मेरी टिप्पणी देखें। धन्यवाद! – gordonwd

+1

यह पूरी तरह से सही नहीं है। यदि आपके पास एक्सएमएल में किसी अन्य के ऊपर घोषित एक व्यू या व्यू ग्रुप है, लेकिन परीक्षा के लिए राइटऑफ या टूलीफ्टऑफ के लिए उपयोग करना चाहते हैं, तो आप @ + आईडी का उपयोग करके नीचे दिए गए दृश्य का संदर्भ दे सकते हैं और फिर आईडी + आईडी को सेट करते समय @ आईडी को फिर से या @id का उपयोग कर सकते हैं। खुद को देखें/देखें समूह। @ + आईडी आईडी को आपके आर में जोड़ देगा और फिर उस दृश्य में प्लग करेगा जब ऐप बनाया गया हो। – speedynomads

+0

@ domji84 आप गलत हैं, आप दृश्यों या संदर्भ के संदर्भ में किसी भी संसाधन को @ + आईडी का उपयोग करके संदर्भित नहीं कर सकते हैं, इसका एकमात्र उद्देश्य नया संसाधन बनाना है। यह उत्तर देखें http://stackoverflow.com/a/5025971/892055 –

1

यदि आपका + संकेत फिक्सिंग में मदद नहीं करता, आप हमेशा अपने id/deathid/birth नीचे की स्थिति, और फिर id/death toLeftOf id/death_label डाल सकता है।

+0

कोशिश की और यह बस उस आईडी/जन्म दृश्य के तहत कुछ भी डालना पसंद नहीं करता है। मैं इसके साथ आगे जाने से पहले एक अलग फ़ाइल में एक और अलग केस को कोड करने का प्रयास करने जा रहा हूं। धन्यवाद! – gordonwd

1

मैं वास्तव में केवल उन्हीं क्षेत्रों के साथ एक अस्थायी layout अप कोडिंग द्वारा इस घटना को नकल करने में सक्षम था, और निर्धारित करने के लिए है कि समस्या दूर चला गया है, तो मैं इसे ऊपर देखने के लिए स्थिति नहीं था प्रारंभिक birth_lbl दृश्य रिश्तेदार कर रहा था (" दिए गए_लेआउट "इस मामले में)।

तो मुझे यकीन नहीं है कि इसे एक फिक्स, वर्कअराउंड, या क्लज के रूप में वर्गीकृत किया गया है (क्या यह अभी भी एक शब्द है?), लेकिन मैंने जो किया वह टेक्स्ट दृश्यों को अपने RelativeLayout के अंदर रखने के लिए था और के सापेक्ष RelativeLayout पर स्थिति रखें। किसी भी मामले में, यह काम करता है ...

2

मैं भी एक ही समस्या का सामना करना पड़ रहा था क्योंकि मैं बाधा लेआउट का उपयोग कर रहा था, लेकिन align_below केवल सापेक्ष लेआउट में काम करता है। तो जांचें कि आप किस लेआउट का उपयोग कर रहे हैं।

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