android - Intellij IDEA/एंड्रॉइड स्टूडियो में मर्ज रूट टैग के साथ पूर्वावलोकन लेआउट




android-layout android-studio (2)

एक नया पेरेंटटाग टूल विशेषता है ( एंड्रॉइड स्टूडियो 2.2 में जोड़ा गया है ) जिसका उपयोग आप मर्ज टैग के लिए लेआउट प्रकार निर्दिष्ट करने के लिए कर सकते हैं, जो लेआउट संपादक पूर्वावलोकन में लेआउट को सही ढंग से प्रस्तुत करेगा।

तो अपने उदाहरण का उपयोग कर:

<merge xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:parentTag="LinearLayout"
    tools:orientation="horizontal">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Some text"
        android:textSize="20sp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Some other text"/>
</merge>

नोट : android:layout_width दोनों android:layout_height और android:layout_height को संपादक में ठीक से प्रदर्शित करने के लिए android:layout_height निर्दिष्ट किया जाना चाहिए।

आइए कल्पना करें कि हम लीनियरलाउट के आधार पर कंपाउंड घटक विकसित कर रहे हैं। तो, हम इस तरह की कक्षा बनाते हैं:

public class SomeView extends LinearLayout {
    public SomeView(Context context, AttributeSet attrs) {
        super(context, attrs);

        setOrientation(LinearLayout.VERTICAL);
        View.inflate(context, R.layout.somelayout, this);
    }
}

अगर हम somelayout.xml रूट के रूप में LinearLayout उपयोग करेंगे, तो हमारे पास अतिरिक्त दृश्य स्तर होगा, इसलिए हम मर्ज टैग का उपयोग करते हैं:

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Some text"
        android:textSize="20sp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Some other text"/>
</merge>

लेकिन आईडीई मर्ज में पूर्वावलोकन टैब में हमेशा फ्रेमलेआउट के रूप में कार्य करता है, और हम ऐसा कुछ देखेंगे:

(यह एंड्रॉइड स्टूडियो है, इंटेलिज आईडीईए वही है, ग्रहण के बारे में मुझे नहीं पता)

लेआउट को विकसित करने की गति का पूर्वावलोकन करें, कुछ लेआउट के लिए भी दुखी है इस तरह की एक बड़ी मदद खोना। निर्दिष्ट करने का एक तरीका हो सकता है, पूर्वावलोकन को विशेष लेआउट में merge टैग की व्याख्या कैसे करनी चाहिए?


मर्ज करने के बजाए माता-पिता के रूप में भी कस्टम क्लास का उपयोग संभव है

<com.mycompany.SomeView xmlns:android="http://schemas.android.com/apk/res/android">
...
</com.mycompany.SomeView>

और फिर सीधे इस लेआउट को SomeView और परिणाम देखें कुछ दृश्य देखें। एंड्रॉइड स्टूडियो सीधे कुछ SomeView मूल वर्ग की जांच करेगा और LinerLayout जैसे पूर्वावलोकन को LinerLayout । आप onFinishInflate() द्वारा विचारों को बाध्य करने के लिए कुछ दृश्य में onFinishInflate() विधि का उपयोग कर सकते हैं। इस समाधान का लाभ यह है कि आप सीधे लेआउट फ़ाइल में सभी लेआउट परिभाषाओं या शैली परिभाषा डाल सकते हैं, आप कोड में setOrientation() जैसी विधि का उपयोग नहीं कर सकते हैं।





android-tools-namespace