Qual é a diferença entre match_parent e fill_parent?

Respostas:

1235

Eles são a mesma coisa (no nível API 8+). Use match_parent.

FILL_PARENT (renomeado MATCH_PARENT no nível 8 da API e superior), o que significa que a exibição deseja ser tão grande quanto seu pai (menos preenchimento)

...

fill_parent: A exibição deve ser tão grande quanto seu pai (menos preenchimento). Essa constante foi descontinuada a partir do nível 8 da API e foi substituída por match_parent.

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

Matt Ball
fonte
5
se eu escrever um aplicativo para 1.6 e 2.2, usarei fill_parent para compatibilidade, está certo?
Emeraldhieu
12
Deve haver algumas diferenças, certo? Caso contrário, por que o Google o reprovou e renomeou o novo?
stuckedoverflow
49
@ Halim Não, não há diferenças : ambos são definidos como constantes -1. I se sentir melhor sobre isso, eu não obter o impovement em que ou ... :-)
Arpy
2
@jlovison Não, não há diferenças. Ambos são -1. Você recebe o erro porque a plataforma mais antiga não sabe sobre o novo nome da mesma constante.
precisa saber é o seguinte
16
É tão estranho que o Android Studio ainda coloque "fill_parent" em todos os layouts criados por modelo padrão! Sei que eles são os mesmos, mas continuo voltando a essa pergunta do SO todos os anos para garantir que ninguém descubra que realmente há uma diferença. A equipe do Google / Android pode alterar o valor padrão de "fill_parent" para "match_parent"? Desde já, obrigado! :)
swooby
246

O Google mudou o nome para evitar confusão.

O problema com o nome antigo fill parentera que ele implica em afetar as dimensões do pai, enquanto match parentdescreve melhor o comportamento resultante - combine a dimensão com o pai.

As duas constantes são resolvidas -1no final e, portanto, resultam no comportamento idêntico no aplicativo. Ironicamente, essa mudança de nome feita para esclarecer as coisas parece ter acrescentado mais confusão do que eliminada.

Tapirboy
fonte
17
... exceto com o filho de RelativeLayout com width = match_parent e, digamos, leftOf de outro. Não corresponde à dimensão de seus pais, preenche o que resta nela. Isso serve apenas para causar confusão.
Kaay
7
Como FILL_PARENT e MATCH_PARENT significa que a visualização deseja ser tão grande quanto seu pai, menos o preenchimento do pai não é o espaço interior e não as dimensões externas? Agora estou ainda mais confuso!
Caltor
@bnieland Eu removi as referências às dimensões interna e externa, pois elas não concordam com a documentação do google em developer.android.com/reference/android/view/…, embora eu possa ver uma citação semelhante (sem fundamento) em sevennet.org / 2014/11/22 /… onde é possível obter suas informações.
Caltor
28

Funcionalmente, sem diferença, o Google acabou de alterar o nome de fill_parent para match_parent, do nível 8 da API (Android 2.2). FILL_PARENT ainda está disponível por motivos de compatibilidade.

LayoutParams.FILL_PARENTe LayoutParams.MATCH_PARENTambos têm o valor -1. Não tenho certeza do que o Google tentou mudar de Preencher pai para combinar pai :)

Como a maioria das phones are >= Android 2.2.. você deve usar o Match Parent para compatibilidade futura ... não tenho certeza de quando interromperão a constante Fill Parent mais antiga!

Umair
fonte
11

Para fins de compatibilidade, é melhor manter o fill_parent, ou seja, ao oferecer suporte abaixo dos dispositivos API 8. Mas se o seu aplicativo segmentar a API 8 e superior, use match_parent.

Olumide Oyetoke
fonte
8
Apenas compatibilidade com versões anteriores. Se FILL_PARENTfor descontinuado (conforme mencionado por Matt Ball acima), a única opção para compatibilidade com versões anteriores é MATCH_PARENT.
2
Concorde, mas se você planeja escrever código para dispositivos de nível inferior da API, por exemplo: 2.3,2.2,2.1, no momento em que você precisar usar FILL_PARENT. Eu tive alguns problemas ao usar o match_parent para versões mais antigas.
MSA
é hora de excluir esta resposta. Não é mais relevante e pode dar o conselho errado para novos desenvolvedores
Tim
8

FILL_PARENTfoi descontinuado no nível 8 da API e MATCH_PARENTusa a API de nível superior

Avanish Kumar
fonte
8

match_parent é usado no lugar de fill_parent e o define para ir o mais longe possível até o pai. Basta usar match_parent e esquecer fill_parent . Abandonei completamente o fill_parent e tudo está perfeito, como de costume.

Confira aqui para mais informações.

Koech
fonte
6

Apenas para dar um nome mais próximo da ação real . "fill_parent"não preenche o espaço restante como o nome implicaria (para isso você usa o atributo de peso). Em vez disso, ocupa tanto espaço quanto seu pai de layout. É por isso que o novo nome é"match_parent"

Jawad Zeb
fonte
2
Eu não entendo a lógica das pessoas quando afirmam isso. Pai tem preenchimento. Ou filho é deixadoDe outro. A criança está combinando? Não. Está preenchendo o espaço restante? Aqui no que é aparentemente o mundo Bizzarro, respondemos: sim.
Kaay
1
@kaay Eu concordo totalmente que o novo nome é pior que o antigo. Mas o que o Google diz vale.
Caltor 04/02
6

Ambos têm funcionalidade semelhante. A única diferença é que fill_parent é usado até o nível 8 da API e match_parent é usado após o nível 8 ou superior da API.

Praveen Gaur
fonte
6

Quando você configurar o layout widthe height como match_parentna XMLpropriedade, ele vai ocupar toda a área que a visão dos pais tem, ou seja, ele vai ser tão grande quanto o pai.

<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>

O pai da lebre é vermelho e o filho é verde. Criança ocupa toda a área. Porque é widthe height é match_parent.

insira a descrição da imagem aqui

Nota: Se pai for aplicado um preenchimento, esse espaço não será incluído.

<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>

insira a descrição da imagem aqui

Então TextView hight = 300dp (pai hight) - (20 (paddingTop) +10 (paddingBottom)) = (300-30) dp = 270 dp

fill_parent vs match_parent

fill_parent é o nome anterior de match_parent

Para API Nível 8 e superior, fill_parentrenomeado como match_parente fill_parentestá obsoleto agora.

Então fill_parente match_parentsão iguais.

Documentação da API para fill_parent

A visualização deve ser tão grande quanto seu pai (menos preenchimento). Essa constante foi descontinuada a partir do nível 8 da API e é substituída por {@code match_parent}.


fonte
4

match_parent, o que significa que a exibição deseja ser tão grande quanto seu pai (menos preenchimento).

wrap_content, o que significa que a visualização deseja ser grande o suficiente para incluir seu conteúdo (mais preenchimento)

Para melhor ilustração, criei um layout de amostra que demonstra esse conceito. Para ver seu efeito, adicionei uma borda de cada conteúdo do textView.

No conteúdo textView "Corresponder pai", podemos ver a largura do layout espalhada por todo o comprimento pai.

Mas podemos ver no texto "Wrap Wrap", exibir a largura do layout e o comprimento do conteúdo (Wrap Content).

Layout do Android

Subarata Talukder
fonte
4

match_parent e fill_parent são a mesma propriedade, usada para definir a largura ou a altura de uma vista em tela cheia horizontal ou verticalmente.

Essas propriedades são usadas em arquivos xml do Android como este.

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

ou

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

fill_parentfoi usado em versões anteriores, mas agora foi preterido e substituído por match_parent. Espero que ajude você.

Mansuu ....
fonte
3

fill_parent: a exibição deve ser tão grande quanto seu pai.

agora esse conteúdo fill_parent foi descontinuado e substituído por match_parent.

Nikita Prajapati
fonte
3

Para mim, preencher pai e combinar pai desempenha a mesma função apenas que:

pai de preenchimento : foi usado antes da API 8

match parent Isso foi usado na API 8+ Function of Both Preenche a visualização pai ao lado do preenchimento

Xcode
fonte
2

FILL_PARENT foi renomeado para MATCH_PARENT no nível 8 da API e superior, o que significa que a visualização deseja ser tão grande quanto seu pai (menos preenchimento) - Google

Sarvesh Thiruppathi
fonte
2

FILL_PARENT foi descontinuado do nível da API 8 e superior e foi renomeado para as versões superiores como MATCH_PARENT

Ambos são o mesmo FILL_PARENTe MATCH_PARENT, FILL_PARENTfoi utilizada na versão inferior a menos de 8 nível API e MATCH_PATENT são usadas em maior maior nível API do que oito.

FILL_PARENT(renomeado MATCH_PARENTna API nível 8 e superior), o que significa que a exibição deseja ser tão grande quanto seu pai (menos preenchimento)

fill_parent: A exibição deve ser tão grande quanto seu pai (menos preenchimento). Essa constante foi descontinuada a partir do nível 8 da API e foi substituída por match_parent.

Para mais detalhes, visite esta página

Utkarsh Srivastava
fonte
0

1. match_parent

Quando você define a largura e a altura do layout como match_parent, ela ocupará toda a área que a visualização pai possui, ou seja, será tão grande quanto o pai.

Nota : Se pai for aplicado um preenchimento, esse espaço não será incluído.

Quando criamos um layout.xml por padrão, temos RelativeLayout como pai principal. Visualização com android: layout_width = "match_parent" e android: layout_height = "match_parent", ou seja, ele ocupa a largura e a altura completas da tela do celular.

Observe também que o preenchimento é aplicado a todos os lados,

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

Agora vamos adicionar uma subvisualização LinearLayout e definir seu layout_width = "match_parent" e layout_height = "match_parent", a visualização gráfica exibirá algo como isto,

match_parent_example

Código

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:

É o mesmo que match_parent, fill_parent foi preterido no nível 8 da API. Portanto, se você estiver usando o nível 8 ou superior da API, evite usar fill_parent

Vamos seguir os mesmos passos que fizemos para match_parent, basta usar fill_parent em qualquer lugar.

Você verá que não há diferença de comportamento nos pais de preenchimento e no pai de correspondência.

Hossam Scott
fonte