Respostas:
Qualquer atributo pode ser aplicado ao tamanho horizontal ou vertical do View (controle visual). É usado para definir um tamanho de Visualização ou Layouts com base no conteúdo ou no tamanho do layout pai, em vez de especificar explicitamente uma dimensão.
fill_parent
(descontinuado e renomeado MATCH_PARENT
no nível 8 da API e superior)
Definir o layout de um widget como fill_parent forçará a expansão para ocupar o espaço disponível no elemento de layout em que foi colocado. É aproximadamente equivalente a definir o estilo de dock de um Controle de Formulário do Windows Fill
.
A configuração de um layout ou controle de nível superior como fill_parent forçará a exibição da tela inteira.
wrap_content
Definir o tamanho de uma visualização como wrap_content forçará a expansão apenas o suficiente para conter os valores (ou controles filho) que ela contém. Para controles - como caixas de texto (TextView) ou imagens (ImageView) - isso envolverá o texto ou a imagem exibida. Para elementos de layout, ele será redimensionado para caber nos controles / layouts adicionados como filhos.
É aproximadamente o equivalente a definir a Autosize
propriedade de um Controle de Formulário do Windows como True.
Documentação Online
Há alguns detalhes na documentação do código do Android aqui .
fill_parent
(descontinuado) =match_parent
A borda da visualização filho se expande para corresponder à borda da visualização pai.
wrap_content
A borda da exibição filho envolve confortavelmente seu próprio conteúdo.
Aqui estão algumas imagens para tornar as coisas mais claras. O verde e o vermelho são TextViews
. O branco é uma LinearLayout
demonstração.
Todo View
(a TextView
, an ImageView
, a Button
, etc.) precisa definir o width
e o height
da exibição. No arquivo de layout xml, pode ser assim:
android:layout_width="wrap_content"
android:layout_height="match_parent"
Além de definir a largura e a altura como match_parent
ou wrap_content
, você também pode defini-los com algum valor absoluto:
android:layout_width="100dp"
android:layout_height="200dp"
Geralmente, isso não é tão bom, porque não é tão flexível para dispositivos de tamanhos diferentes. Depois de entender wrap_content
e match_parent
, a próxima coisa a aprender é layout_weight
.
Vertical LinearLayout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="width=wrap height=wrap"
android:background="#c5e1b0"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="width=match height=wrap"
android:background="#f6c0c0"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="width=match height=match"
android:background="#c5e1b0"/>
</LinearLayout>
Horizontal LinearLayout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="WrapWrap"
android:background="#c5e1b0"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="WrapMatch"
android:background="#f6c0c0"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="MatchMatch"
android:background="#c5e1b0"/>
</LinearLayout>
A explicação nesta resposta assume que não há margem ou preenchimento . Mas, mesmo que exista, o conceito básico ainda é o mesmo. A borda / espaçamento da vista é apenas ajustada pelo valor da margem ou preenchimento.
fill_parent
fará com que a largura ou altura do elemento seja tão grande quanto o elemento pai, ou seja, o contêiner.
wrap_content
fará com que a largura ou a altura sejam tão grandes quanto necessárias para conter os elementos dentro dela.
fill_parent
:
Um componente é organizado e o layout fill_parent
será obrigatório para expandir para preencher os membros da unidade de layout, tanto quanto possível no espaço. Isso é consistente com a propriedade dockstyle do controle do Windows. Um layout ou controle superior definido fill_parent
o forçará a ocupar a tela inteira.
wrap_content
Configurar uma visualização do tamanho de wrap_content
será forçado a visualizar é expandido para mostrar todo o conteúdo. Os controles TextView e ImageView , por exemplo, estão configurados para wrap_content
exibir todo o texto e imagem internos. Os elementos do layout alteram o tamanho de acordo com o conteúdo. Configure uma exibição do tamanho do atributo Autosize wrap_content
aproximadamente equivalente a definir um controle do Windows para True.
Para obter detalhes, confira este link: http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
fill_parent
nome foi renomeadomatch_parent
no API Level 8 e superior.