2012-07-23 11 views
6

मैं एंड्रॉइड प्रोग्रामिंग के लिए नया हूं लेकिन documentation से लेआउट के बारे में मुझे कितना समझ आया है, रिलेवेटलाइट का अधिकतर उपयोग होता है जब आपको कुछ नियमों और फ्रेमलेआउट के आधार पर विचारों की आवश्यकता होती है जब आप विचारों को ओवरलैप करना चाहते हैं।फ़्रेम और सापेक्ष लेआउट के बीच अंतर?

लेकिन दुर्भाग्यवश निम्न प्रोग्राम के लिए मुझे रिलेवेटिवआउट का उपयोग करके फ़्रेमलेआउट का कार्य मिलता है। मैंने अपना काम पूरा कर लिया लेकिन समझने के लिए, क्या मुझे अंतर में कुछ याद आ रहा है? इसके अलावा, बटन मेरी छवि पर कैसे आए? (। यहां तक ​​कि अन्य छवि अतिव्यापी है)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/ic_launcher" 
    /> 

<ImageView 
    android:id="@+id/imageView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/ic_launcher" 
    android:layout_alignParentTop="true" 
    android:layout_alignLeft="@id/imageView1" 
    /> 

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/imageView1" 
    android:gravity="center" 
    android:orientation="horizontal" 
    android:weightSum="1.0" > 

<Button 
    android:id="@+id/button1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="0.33" 
    android:text="Login" /> 

<Button 
    android:id="@+id/button2" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="0.33" 
    android:text="Register" /> 

<Button 
    android:id="@+id/button3" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="0.33" 
    android:text="Try application" /> 

</LinearLayout> 

</RelativeLayout> 
+0

http://stackoverflow.com/a/4905403/1434631 – Nermeen

उत्तर

16

RelativeLayout उपयोग कर सकते हैं:

android:layout_toEndOf="@id/some_view" 
android:layout_toStartOf="@id/some_view" 
android:layout_above="@id/some_view" 
android:layout_below="@id/some_view" 

एक दूसरे के संबंध में सही ढंग से सुनिश्चित करें कि विचारों लाइनअप बनाने के लिए। FrameLayout बहुत ही समान है सिवाय इसके कि यह केवल अपने विचारों को प्रदर्शित करने के लिए गुरुत्वाकर्षण का उपयोग कर रहा है (कोई संबंध नहीं है)।

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

8

विचारों के संबंध में सापेक्ष Layout। यह एक लेआउट प्रबंधक है जो आपको कुछ नियमों के आधार पर आपके यूआई तत्वों की व्यवस्था करने में मदद करता है। आप इस तरह की चीजें निर्दिष्ट कर सकते हैं: माता-पिता को बाएं किनारे पर संरेखित करें, इसे इस तत्व के बाएं/दाएं आदि पर रखें

फ़्रेमलेआउट जेड-अक्ष के साथ प्लेसमेंट की अनुमति देता है। यही है कि आप अपने दृश्य तत्वों को एक दूसरे के ऊपर ढेर कर सकते हैं।

+2

आप रिलेटिवलेआउट में भी ढेर कर सकते हैं – NikkyD

0

सापेक्ष लयआउट - जैसा कि नाम इस व्यू समूह में सुझाव देता है, दृश्य एक-दूसरे के सापेक्ष रखे जाते हैं। Relativelayout की सबसे अधिक उपयोग की जाने वाली संपत्ति का उपयोग

android:layout_toLeftOf="@id/some_view1" 
android:layout_toRightOf="@id/some_view2" 
android:layout_above="@id/some_view3" 
android:layout_below="@id/some_view4" 
android:layout_toendof="@id/some_view5" 
android:layout_tostartof="@id/some_view6" 

व्यू एक-दूसरे के सापेक्ष रखे जाते हैं। जटिल डिजाइन विकसित करते समय यह वास्तव में सहायक है।

फ़्रेमलायआउट - यह एक ऑब्जेक्ट व्यू के रूप में व्यवहार करता है, प्रत्येक के सापेक्ष नहीं बल्कि फ़्रेमलेआउट के अनुसार रखा जाता है। फ्रेमलेआउट सबसे बड़ा बाल दृश्य का आकार लेता है।

android:gravity="center_horizontal|center_vertical|bottom" 

उपरोक्त संपत्ति का उपयोग बाल दृश्य स्थिति संशोधित है।

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