2011-06-08 14 views
7

आमतौर पर मैं इस तरह लेआउट कोड लिखने के लिए है:मैं डिफ़ॉल्ट नामस्थान में एंड्रॉइड विशेषताओं को परिभाषित क्यों नहीं कर सकता?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:orientation="vertical" /> 

मैं इस तरह कुछ करना चाहता हूँ:

<LinearLayout xmlns="http://schemas.android.com/apk/res/android" 
       layout_width="fill_parent" 
       layout_height="fill_parent" 
       orientation="vertical" > 

लेकिन इस कोड को ठीक से नहीं चलता है। क्यूं कर?

और दूसरा प्रश्न: क्यों CamenCase में तत्व namen हैं और गुण under_score में हैं?

उत्तर

6

एक्सएमएल डिफ़ॉल्ट नामस्थान do not apply to attribute names

डिफ़ॉल्ट नाम स्थान घोषणाओं सीधे विशेषता नाम पर लागू नहीं है,: इसलिए, आप हमेशा एक विशेषता का नाम स्थान निर्दिष्ट करने के लिए, कोई है तो यह है अपरिक्स्ड विशेषताओं की व्याख्या तत्व द्वारा निर्धारित की जाती है जिस पर वे दिखाई देते हैं।

तो असली सवाल यह है: क्यों एंड्रॉयड डिजाइनर, एक namespace बिना तत्व के नाम को परिभाषित किया था एंड्रॉयड नाम स्थान में केवल गुण डाल?

दस्तावेज़ पता चलता है, अगर तत्व नाम एंड्रॉयड नाम स्थान पर थे, तो नाम वास्तव में अपने स्वयं के नाम स्थान की जरूरत नहीं हैं विशेषता।

+3

अब मैं देखता हूं। यह वास्तव में अजीब है क्योंकि एक्सएएमएल और एमएक्सएमएल में सभी नियंत्रण उचित नामस्थान में हैं और यहां तक ​​कि कोई बेवकूफ अंडरस्कोर उपसर्ग नहीं हैं। तो माइक्रोसॉफ्ट और एडोब ने साबित कर दिया था कि एक सुरुचिपूर्ण एक्सएमएल आधारित जीयूआई मार्कअप भाषा बनाना संभव है और Google ने ऐसा करने में कामयाब नहीं किया है। – Poma

1

लेकिन यह कोड ठीक से नहीं चलता है। क्यूं कर?

क्योंकि निर्माण उपकरण इसका समर्थन नहीं करते हैं। आखिरी बार मैंने जांच की, किसी भी प्रीफिक्स्ड नेमस्पेस को काम करना चाहिए (उदा।, xmlns:a="http://schemas.android.com/apk/res/android"), लेकिन डिफ़ॉल्ट नेमस्पेस ने कभी काम नहीं किया है।

यदि आप चाहें, तो आप पैच का प्रस्ताव और योगदान कर सकते हैं। रास्ते के साथ, आप यह निर्धारित करने में सक्षम होंगे कि इसके लिए दार्शनिक कारण है, तकनीकी कारण है, या यदि वे इसके आसपास कभी नहीं मिलते हैं।

क्यों तत्व नाममेन CamelCase में हैं और विशेषताएँ under_score में हैं?

तत्व नाम जावा क्लासेस हैं, जो आम तौर पर कैमेलकेस में होते हैं। गुण सामान्य रूप से "under_score में" नहीं हैं - layout_ उपसर्ग उन गुणों के परिवार को इंगित करता है जो View से इसके कंटेनर में अनुरोध हैं। लेकिन, यदि आप विशेषताओं को अधिक सावधानी से देखते हैं, तो आप देखेंगे कि अधिकांश उपसर्ग हैं (उदाहरण के लिए, android:textSize)।

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

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