पाठ "हैलो" के लिए केवल स्थान के बजाय व्यू का पूरा स्थान क्यों लेता है?
क्योंकि View
एक फ्लेक्स कंटेनर है और डिफ़ॉल्ट रूप से flexDirection: 'column'
और alignItems: 'stretch'
, जिसका अर्थ है कि इसके बच्चों को इसकी चौड़ाई भरने के लिए बढ़ाया जाना चाहिए।
(ध्यान दें, प्रति डॉक्स , कि सब प्रतिक्रिया मूल निवासी में घटक हैं display: 'flex'
कि डिफ़ॉल्ट रूप से और display: 'inline'
सब पर मौजूद नहीं है इस तरह, एक के डिफ़ॉल्ट व्यवहार को। Text
एक के भीतर View
में के डिफ़ॉल्ट व्यवहार से मूल निवासी अलग प्रतिक्रिया span
एक के भीतर div
वेब पर; बाद के मामले में, यह अवधि चौड़ाई को नहीं भरेगी div
क्योंकि span
डिफ़ॉल्ट रूप से एक इनलाइन तत्व है। रिएक्ट नेटिव में ऐसी कोई अवधारणा नहीं है।)
पाठ को कैसे दाएं / संरेखित किया जा सकता है?
float
संपत्ति में मूल निवासी प्रतिक्रिया नहीं है मौजूद हैं, लेकिन देखते हैं भार उपलब्ध विकल्पों में से आप के लिए (थोड़ा अलग व्यवहार के साथ) आप अपने पाठ को राइट-संरेखित देंगे। यहाँ मैं के बारे में सोच सकते हैं:
<View>
<Text style={{textAlign: 'right'}}>Hello, World!</Text>
</View>
(यह दृष्टिकोण इस तथ्य को नहीं बदलता है कि यह Text
संपूर्ण चौड़ाई को भरता है View
; यह केवल पाठ को सही-संरेखित करता है Text
)।
<View>
<Text style={{alignSelf: 'flex-end'}}>Hello, World!</Text>
</View>
यह Text
अपनी सामग्री को रखने के लिए आवश्यक आकार के तत्व को सिकोड़ता है और इसे क्रॉस दिशा (क्षैतिज दिशा, डिफ़ॉल्ट रूप से) के अंत में रखता है View
।
<View style={{alignItems: 'flex-end'}}>
<Text>Hello, World!</Text>
</View>
यह alignSelf: 'flex-end'
सभी View
बच्चों पर सेट करने के बराबर है ।
<View style={{flexDirection: 'row', justifyContent: 'flex-end'}}>
<Text>Hello, World!</Text>
</View>
flexDirection: 'row'
ऊर्ध्वाधर के बजाय क्षैतिज होने की मुख्य दिशा सेट करता है; justifyContent
जैसा है alignItems
, लेकिन क्रॉस दिशा के बजाय मुख्य दिशा में संरेखण को नियंत्रित करता है।
<View style={{flexDirection: 'row'}}>
<Text style={{marginLeft: 'auto'}}>Hello, World!</Text>
</View>
यह दृष्टिकोण वेब और वास्तविक सीएसएस के संदर्भ में, https://stackoverflow.com/a/34063808/1709587 पर प्रदर्शित किया गया है ।
<View>
<Text style={{position: 'absolute', right: 0}}>Hello, World!</Text>
</View>
वास्तविक सीएसएस की तरह, यह Text
"प्रवाह से बाहर" लेता है , जिसका अर्थ है कि उसके भाई-बहन इसे ओवरलैप करने में सक्षम होंगे और इसकी ऊर्ध्वाधर स्थिति View
डिफ़ॉल्ट रूप से सबसे ऊपर होगी (हालांकि आप स्पष्ट रूप से शीर्ष के ऊपर से दूरी तय कर सकते हैं। शैली संपत्ति View
का उपयोग करते हुए top
)।
स्वाभाविक रूप से, इन विभिन्न दृष्टिकोणों में से आप किसका उपयोग करना चाहते हैं - और क्या उनके बीच का विकल्प भी बिल्कुल मायने रखता है - आपकी सटीक परिस्थितियों पर निर्भर करेगा।
justifyContent
,alignItems
,alignSelf
। मुझे आश्चर्य है कि कौन सा सही है।