मैच_परेंट और फिल_परेंट के बीच अंतर क्या है?


1400

मैं दो XML गुणों के बारे में थोड़ा उलझन में हूँ: match_parentऔर fill_parent। ऐसा लगता है कि दोनों एक ही हैं। क्या उनके बीच कोई अंतर है?


अगर आपको फ्री डेवलपर
शोमू

जवाबों:


1235

वे एक ही चीज़ हैं (एपीआई स्तर 8+ में)। का उपयोग करें match_parent

FILL_PARENT (एपीआई स्तर 8 और उच्चतर में MATCH_PARENT का नाम), जिसका अर्थ है कि यह दृश्य अपने माता-पिता (माइनस पैडिंग) जितना बड़ा होना चाहता है

...

fill_parent: दृश्य उसके माता-पिता (माइनस पैडिंग) जितना बड़ा होना चाहिए। यह स्थिरांक एपीआई स्तर 8 से शुरू होता है और इसके द्वारा प्रतिस्थापित किया जाता है match_parent

http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html


5
अगर मैं 1.6 और 2.2 दोनों के लिए ऐप लिखता हूं, तो मैं संगतता के लिए fill_parent का उपयोग करूंगा, क्या यह सही है?
पन्नाधाय

12
कुछ अंतर तो सही होने चाहिए? अन्यथा Google ने इसे अपदस्थ कर नया नाम क्यों बदल दिया?
स्टिकओवरफ़्लो

49
@Halim नहीं, है कोई differece : दोनों निरंतर रूप में परिभाषित कर रहे हैं -1। मुझे लगता है कि आप इसके बारे में बेहतर महसूस करते हैं, मुझे इसमें या तो इंप्रूवमेंट नहीं मिलती ... :-)
arpy

2
@jlovison नहीं, कोई मतभेद नहीं हैं। दोनों हैं -1। आपको त्रुटि मिलती है क्योंकि पुराने प्लेटफ़ॉर्म को बहुत समान नाम के नए नाम के बारे में नहीं पता है।
तापीरबॉय

16
यह बहुत अजीब है कि एंड्रॉइड स्टूडियो अभी भी सभी डिफ़ॉल्ट टेम्पलेट बनाए गए लेआउट में "fill_parent" डालता है! मुझे पता है कि वे एक ही हैं, लेकिन मैं हर साल इस एसओ सवाल पर वापस आता रहता हूं ताकि यह सुनिश्चित हो सके कि किसी को पता न चले कि वास्तव में अंतर है। क्या Google / Android- टीम कृपया "fill_parent" से "match_parent" का डिफ़ॉल्ट मान बदल सकते हैं? अग्रिम में धन्यवाद! :)
स्वोबी

246

भ्रम से बचने के लिए Google ने नाम बदल दिया।

पुराने नाम के साथ समस्या fill parentयह थी कि इसका अर्थ माता-पिता के आयामों को प्रभावित करना है, जबकि match parentबेहतर परिणाम के व्यवहार का वर्णन करता है - माता-पिता के साथ आयाम से मेल खाता है।

दोनों स्थिरांक -1अंत में हल करते हैं , और इसलिए ऐप में समान व्यवहार होता है। विडंबना यह है कि चीजों को स्पष्ट करने के लिए किया गया यह नाम परिवर्तन लगता है कि इसे खत्म करने के बजाय भ्रम को जोड़ा गया है।


17
... RelativeLayout के बच्चे के साथ चौड़ाई के अलावा = match_parent और, कहते हैं, बायां दूसरा। यह अपने माता-पिता के आयाम से मेल नहीं खाता है, जो उसमें रहता है वह भरता है। यह केवल CAUSE भ्रम की स्थिति में कार्य करता है।
काया

7
जैसा कि FILL_PARENT और MATCH_PARENT का मतलब है कि यह दृश्य अपने माता-पिता के समान बड़ा होना चाहता है, माता-पिता की पैडिंग माइनस नहीं है कि बाहरी आयामों के बजाय आंतरिक स्थान है? अब मैं और भी उलझन में हूँ!
Caltor

@bnieland मैंने डेवलपर और आंतरिक आयामों के संदर्भों को हटा दिया है क्योंकि वे डेवलपर /android.com/reference/android/view/… पर Google दस्तावेज़ से सहमत नहीं हैं, हालांकि मैं एक समान (अप्रतिबंधित) उद्धरण को सातnet.org पर देख सकता हूं / 2014/11/22 /… जो है जहाँ आप से अपनी जानकारी मिल सकती है।
काल्टर

28

आमतौर पर कोई अंतर नहीं है, Google ने केवल एपीआई स्तर 8 (एंड्रॉइड 2.2) से fill_parent से मैच_परेंट में नाम बदल दिया है। FILL_PARENT अभी भी संगतता कारण के लिए उपलब्ध है।

LayoutParams.FILL_PARENTऔर LayoutParams.MATCH_PARENTदोनों का मूल्य -1 है। सुनिश्चित करें कि क्या भरा हुआ है जो माता-पिता से मैच करने के लिए बदल सकता है

अधिकांश के बाद से phones are >= Android 2.2.. आपको भविष्य की संगतता के लिए मैच पैरेंट का उपयोग करना चाहिए ... निश्चित नहीं कि वे पुराने फिल पेरेंट को कब बंद करेंगे!


11

अनुकूलता के लिए, API 8 उपकरणों का समर्थन करते समय, fill_parent से चिपकना बेहतर है, अर्थात। लेकिन अगर आपका ऐप API 8 और ऊपर की तरफ लक्षित करता है, तो आपको इसके बजाय match_parent का उपयोग करना चाहिए।


8
हालांकि केवल पश्चगामी संगतता। यदि FILL_PARENTवंचित किया गया है (जैसा कि ऊपर मैट बॉल द्वारा उल्लेख किया गया है), तो आगे संगतता के लिए एकमात्र विकल्प है MATCH_PARENT

2
सहमत हैं, लेकिन यदि आपके पास निम्न एपीआई स्तर के उपकरणों के लिए कोड लिखने की योजना है, तो इस समय: 2.3.2.2,2.1 को आपको FILL_PARENT का उपयोग करने की आवश्यकता है। मुझे पुराने संस्करणों के लिए match_parent का उपयोग करने में कुछ समस्याएं थीं।
एमएसए

इस उत्तर को हटाने का समय आ गया है। यह अब प्रासंगिक नहीं है और नए डेवलपर्स को गलत सलाह दे सकता है
टिम

8

FILL_PARENTएपीआई स्तर 8 में पदावनत किया गया है और MATCH_PARENTउच्च स्तरीय एपीआई का उपयोग किया गया है


8

match_parent के स्थान पर प्रयोग किया जाता है fill_parent और सेट यह जहाँ तक माता-पिता से चला जाता है जाने के लिए। बस match_parent का उपयोग करें और fill_parent के बारे में भूल जाएं । मैंने पूरी तरह से fill_parent खाई और सब कुछ हमेशा की तरह परिपूर्ण है।

अधिक के लिए यहां देखें ।


6

बस इसे वास्तविक कार्रवाई के करीब एक नाम देने के लिए"fill_parent"शेष स्थान नहीं भरता है क्योंकि नाम का अर्थ होगा (इसके लिए आप वजन विशेषता का उपयोग करते हैं)। इसके बजाय, यह अपने लेआउट माता-पिता के रूप में ज्यादा जगह लेता है। इसलिए नया नाम है"match_parent"


2
जब वे यह कहते हैं तो मुझे लोगों के तर्क समझ में नहीं आते हैं। माता-पिता की गद्दी है। या बच्चा दूसरा बचा हुआ है। क्या बच्चा इसका मिलान कर रहा है? क्या यह शेष स्थान को भर रहा है? यहाँ स्पष्ट रूप से बिज़ार्रो वर्ल्ड क्या है, हम जवाब देते हैं: हाँ।
काया २ k

1
@ उक मैं पूरी तरह से सहमत हूं नया नाम पुराने से भी बदतर है। लेकिन गूगल जो कहता है वह हो जाता है।
कलस्टर

6

दोनों में समान कार्यक्षमता है केवल अंतर यह है कि fill_parent का उपयोग API स्तर 8 तक किया जाता है और मैच_parent का उपयोग API स्तर 8 या उच्चतर स्तर के बाद किया जाता है।


6

जब आप लेआउट widthऔर संपत्ति के height रूप match_parentमें सेट करते XMLहैं, तो यह उस संपूर्ण क्षेत्र पर कब्जा कर लेगा जो माता-पिता के पास है, यानी यह माता-पिता जितना बड़ा होगा।

<LinearLayout
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:background="#f9b0b0">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#b0f9dc"/>

</LinearLayout>

हरे माता-पिता लाल हैं और बच्चा हरा है। बच्चा सभी क्षेत्र पर कब्जा करता है। क्योंकि यह है widthऔर height कर रहे हैं match_parent

यहां छवि विवरण दर्ज करें

नोट: यदि माता-पिता को एक गद्दी लगाई जाती है तो उस स्थान को शामिल नहीं किया जाएगा।

<LinearLayout
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:background="#f9b0b0"
    android:paddingTop="20dp"
    android:paddingBottom="10dp">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#b0f9dc"/>

</LinearLayout>

यहां छवि विवरण दर्ज करें

तो TextView hight = 300dp (पैरेंट हाइट) - (20 (पेडिंगटॉप) +10 (पेडिंगबॉटम)) = (300 - 30) dp = 270 dp

fill_parent Vs match_parent

fill_parent का पिछला नाम है match_parent

एपीआई स्तर 8 और उच्चतर के लिए fill_parentइसका नाम बदल दिया गया है match_parentऔर fill_parentअब इसे हटा दिया गया है।

तो fill_parentऔर match_parentसमान हैं।

भरने के लिए एपीआई प्रलेखन_परेंट

यह दृश्य इसके माता-पिता (माइनस पैडिंग) जितना बड़ा होना चाहिए। यह स्थिरांक एपीआई स्तर 8 से शुरू होता है और {@code match_parent} द्वारा प्रतिस्थापित किया जाता है।


4

मैच_परेंट, जिसका अर्थ है कि यह दृश्य अपने माता-पिता (माइनस पैडिंग) जितना बड़ा होना चाहता है।

wra_content, जिसका अर्थ है कि यह दृश्य अपनी सामग्री को जोड़ने के लिए बस इतना बड़ा होना चाहता है (प्लस पैडिंग)

बेहतर चित्रण के लिए, मैंने एक नमूना लेआउट बनाया है जो इस अवधारणा को प्रदर्शित करता है। इसका प्रभाव देखने के लिए, मैंने प्रत्येक textView सामग्री की एक सीमा जोड़ी।

"मैच पैरेंट" टेक्स्ट व्यू कंटेंट में, हम देख सकते हैं कि यह लेआउट की चौड़ाई पूरी तरह से फैली हुई है।

लेकिन हम "Wrap Content" टेक्स्ट व्यू कंटेंट में देख सकते हैं, यह लेआउट की सामग्री (Wrap Content) की लंबाई से लिपटी हुई है।

Android लेआउट


4

match_parent और fill_parent समान गुण हैं, जिसका उपयोग पूर्ण स्क्रीन में क्षैतिज या लंबवत रूप से किसी दृश्य की चौड़ाई या ऊँचाई को परिभाषित करने के लिए किया जाता है।

इन गुणों का उपयोग android xml फ़ाइलों में इस तरह किया जाता है।

 android:layout_width="match_parent"
 android:layout_height="fill_parent"

या

 android:layout_width="fill_parent"
 android:layout_height="match_parent"

fill_parentपिछले संस्करणों में इस्तेमाल किया गया था, लेकिन अब इसे हटा दिया गया है और इसकी जगह ले ली गई है match_parent। मुझे उम्मीद है कि यह आपकी मदद करेगा।


3

fill_parent: यह दृश्य उसके माता-पिता जितना बड़ा होना चाहिए।

अब यह सामग्री fill_parent को हटा दिया गया है और match_parent द्वारा बदल दिया गया है।


3

मेरे लिए माता - पिता को भरना और माता - पिता का मेल एक ही कार्य करता है:

भर माता-पिता : एपीआई 8 से पहले इस्तेमाल किया गया था

अभिभावक से मेल करें यह दोनों के एपीआई 8+ फंक्शन से उपयोग किया गया था और पैरेंट दृश्य को पैडिंग से अलग करता है


2

FILL_PARENT को एपीआई स्तर 8 में MATCH_PARENT नाम दिया गया था और इसका मतलब यह है कि यह दृश्य अपने माता-पिता (माइनस पैडिंग) जितना बड़ा होना चाहता है - Google


2

FILL_PARENT एपीआई स्तर 8 और उच्चतर से हटा दिया गया है और इसे ऊपरी संस्करणों के लिए बदल दिया गया है MATCH_PARENT

दोनों समान हैं FILL_PARENTऔर MATCH_PARENT, FILL_PARENTएपीआई स्तर 8 से कम संस्करण में उपयोग किया गया था और MATCH_PATENT 8 से अधिक उच्च एपीआई स्तर में उपयोग किया जाता है।

FILL_PARENT( MATCH_PARENTएपीआई स्तर 8 और उच्चतर में बदला हुआ), जिसका अर्थ है कि यह दृश्य अपने माता-पिता (माइनस पैडिंग) जितना बड़ा होना चाहता है

fill_parent: दृश्य उसके माता-पिता (माइनस पैडिंग) जितना बड़ा होना चाहिए। यह स्थिरांक एपीआई स्तर 8 से शुरू होता है और इसके द्वारा प्रतिस्थापित किया जाता है match_parent

अधिक जानकारी के लिए कृपया इस पृष्ठ पर जाएँ


0

1. माचिस_परेंट

जब आप लेआउट की चौड़ाई और ऊंचाई को match_parent के रूप में सेट करते हैं, तो यह उस संपूर्ण क्षेत्र पर कब्जा कर लेगा, जो माता-पिता के पास है, यानी यह माता-पिता जितना बड़ा होगा।

नोट : यदि माता-पिता को एक गद्दी लगाई जाती है तो उस स्थान को शामिल नहीं किया जाएगा।

जब हम डिफ़ॉल्ट रूप से एक लेआउट बनाते हैं। हमारे पास डिफ़ॉल्ट के रूप में RelativeLayout होता है, तो Android के साथ डिफ़ॉल्ट पैरेंट देखें: Layout_width = "match_parent" और android: Layout_height = "match_parent" अर्थात यह मोबाइल स्क्रीन की पूरी चौड़ाई और ऊंचाई पर कब्जा कर लेता है।

यह भी ध्यान दें कि पैडिंग सभी पक्षों पर लागू होती है,

android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"

अब एक उप-दृश्य रेखीयआउट को जोड़ने देता है और इसके लेआउट_ एक्सपोज़र = "match_parent" और layout_height = "match_parent" को सेट करता है, चित्रमय दृश्य कुछ इस तरह प्रदर्शित होता है;

match_parent_example

कोड

xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.code2care.android.togglebuttonexample.MainActivity" >

android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="11dp"
android:background="#FFFFEE"
android:orientation="vertical" >

2. fill_parent:

यह मैच_परेंट के समान है, fill_parent को API स्तर 8 में मूल्यह्रास किया गया था। इसलिए यदि आप API स्तर 8 या उससे ऊपर का उपयोग कर रहे हैं, तो आपको fill_parent का उपयोग करने से बचना चाहिए

हम उसी तरह से चरणों का पालन करते हैं जैसे हमने match_parent के लिए किया था, इसके बजाय हर जगह fill_parent का उपयोग करें।

आप देखेंगे कि fill_parent और माता-पिता दोनों के व्यवहार में कोई अंतर नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.