2015-01-14 4 views
13

तो मैं रिश्तेदार लेआउट का उपयोग करने में सहज हूं, लेकिन एंड्रॉइड स्टूडियो में उपयोग करने के दौरान मैंने देखा कि मेरे रिश्तेदार लेआउट में बच्चे के विचारों ने इसे निम्नलिखित दोनों उत्पन्न किए हैं।सापेक्ष लेआउट alignParentLeft बनाम alignParentStart

android:layout_alignParentLeft="true" 
android:layout_alignParentStart="true 

मैं एंड्रॉयड डॉक्स here की जाँच की है, लेकिन दोनों के बीच एक अंतर नहीं देख सकता। एंड्रॉइड स्टूडियो में निश्चित रूप से एक दूसरे के लिए स्वैपिंग से कोई फर्क नहीं पड़ता है। क्या कोई है?

+0

मुझे कोई भी दृश्य अंतर कभी नहीं मिला। – Rohit5k2

+2

हां, किसी भी आरटीएल भाषा में भाषा बदलें और आप – Selvin

+0

@selvin देखेंगे: आपका क्या मतलब है? मुझे यह भी जानना है। – Rohit5k2

उत्तर

9

यह लेआउट दिशा पर निर्भर करता है। लेआउट दिशा या तो बाएं से दाएं हो सकती है (प्रारंभ = बाएं, अंत = दाएं), या दाएं से बाएं (इसके विपरीत)।

डिफ़ॉल्ट रूप से, लेआउट दिशा स्थान (बाएं से दाएं अंग्रेजी जैसी भाषाओं के लिए, की तरह अरबी भाषाओं के लिए सही करने के लिए छोड़ दिया है) पर आधारित है, लेकिन आप layoutDirection XML विशेषता या setLayoutDirection समारोह के साथ ओवरराइड कर सकते हैं । उदा .:

android:layoutDirection="ltr" 

^सभी उपकरणों पर alignParentLeft को alignParentStart बराबर कर देगा।

android:layoutDirection="rtl" 

^alignParentStart को सभी उपकरणों पर संरेखित करने के बराबर होगा। आप मूल दृश्य से लेआउट दिशा का उत्तराधिकारी पाने के लिए लोकेल या "वारिस" का उपयोग करने के लिए "लोकेल" पर भी सेट कर सकते हैं।

आप सही-से-बाएँ लेआउट का समर्थन करने के लिए अपने AndroidManifest.xml android:supportsRtl="true" जोड़ने की जरूरत है।

भी संबंधित: android:textDirection

+0

उपयोगी मुझे लगता है। –

1

ये "xxxStart", "xxxEnd" विशेषता कुछ स्थानों में RTL (लेफ्ट का अधिकार) का समर्थन करने के लेआउट है। इस तरह

रूप
android:paddingStart 
android:paddingEnd 
android:layout_marginStart 
android:layout_marginEnd 
... 

आप more here इसके बारे में देख सकते हैं।

सामान्य (बाएं से दाएं) लेआउट में, "xxxStart" का अर्थ है "xxxLeft" और "xxxEnd" का अर्थ है "xxxRight" लेकिन दाएं से बाएं लेआउट में, "xxxStart" का अर्थ है "xxxRight" और "xxxEnd" का अर्थ है "xxxLeft "।

लेकिन आरटीएल केवल एसडीके 17 और उच्चतर पर समर्थित है।

कम एसडीके का समर्थन करने के लिए, आप उपयोग कर सकते हैं "एंड्रॉयड: layout_marginStart" "एंड्रॉयड: layout_marginLeft" के साथ। निचले एसडीके उपकरणों पर, "एंड्रॉइड: layout_marginLeft" का उपयोग किया जाएगा।

+0

एंड्रॉइड 17 या उच्चतम पर समर्थन के बारे में अच्छा बिंदु, यह मेरी तरह की उपयोगी जानकारी है। –

4
android:layout_alignParentStart="true" 

उसकी पेरेंट शुरू बढ़त को यह देखने के शुरू किनारे संरेखित करता है। यह लीटर के लिए किनारे छोड़ दिया है स्थानों (बाएं से दाएं) और सही RTL (दाएं से बाएं) की तरह अरबी, हिब्रू, फ़ारसी आदि

स्थान भाषाओं पर एक कारण एंड्रॉयड स्टूडियो भी कहते हैं

android:layout_alignParentLeft="true" 

आपके विचारों के लिए 4.2.x Jelly Bean से पहले पुराने प्लेटफ़ॉर्म का समर्थन करना है।आरंभ/समाप्तिlayout_alignParentStart तरह जिम्मेदार बताते बाद एपीआई 17 से ही उपलब्ध हैं। नए प्लेटफॉर्म के बाईं/दाईं जिम्मेदार बताते हैं केवल यदि इसी आरंभ/समाप्ति गुण नहीं पाए जाते हैं वापस आने।

मामले में, अपने आवेदन विरासत प्लेटफार्मों android:minSdkVersion स्तर 17 आप हमेशा अपने विचारों के लिए बाईं/दाईं गुण प्रदान करनी चाहिए नीचे का उपयोग कर समर्थन करता है। अन्यथा परियोजना

की तरह एक त्रुटि संदेश के साथ संकलन नहीं होगा एपीआई 17 से पुराने संस्करणों (परियोजना 7 निर्दिष्ट करता है) आप भी एंड्रॉयड जोड़ना चाहिए समर्थन करने के लिए: layout_alignParentLeft = "true"

यह भी ध्यान रखें कि आपके एंड्रॉइड एप्लिकेशन को आपके AndroidManifest.xml के भीतर आरटीएल लोकेशंस के लिए भी अपना समर्थन घोषित करने की आवश्यकता है।

<application 
    ... 
    android:supportsRtl="true" 
/> 
+0

स्वीकार्य उत्तर से यह अधिक उपयोगी है। –

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