Como definir layouts diferentes em 1 arquivo XML no Android
-
26-09-2019 - |
Pergunta
Olá amigos, eu configurei meu layout através da placa na linearlayout, mas ainda assim meu botão no final não pôde ser definido corretamente, pois a placa divide todos os campos em número de colunas, para que alguém possa ajudar como definir 2 layouts em um arquivo XML significa todas as Campos na placa e permanecendo os botões de login e registro no layout linear de outros, para que possam definir corretamente.
Desde já, obrigado.
Layout
Nome de usuário ! EdittExtBox
Senha ! EdittExtBox
Conecte-se ! Registro
Botão ! Botão
Eu quero meu layout no formato acima, então usei o Tablaout, mas nesse caso está causando a visualização do meu botão, bem como está esticando um botão do que outro, pois o EditText é maior que o TextView
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textSize="26sp"
android:text="@string/login_text"/>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TableRow>
<TextView
android:layout_width="120px"
android:text="User name"
/>
<EditText
android:id="@+id/txtUserName"
android:singleLine="true"
android:maxLength="20"
android:width="195px"
/>
</TableRow>
<TableRow>
<TextView
android:layout_width="120px"
android:text="Password"
/>
<EditText
android:id="@+id/txtPassword"
android:width="195px"
android:maxLength="20"
android:singleLine="true"
android:password="true"
/>
</TableRow>
<TableRow>
<TextView />
<CheckBox android:id="@+id/chkRememberPassword"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Remember Password"
/>
</TableRow>
<TableRow>
<Button
android:id="@+id/buttonRegister"
android:text="Register"
android:layout_width="124px"
android:layout_height="wrap_content"
android:layout_below="@+id/chkRememberPassword"
android:layout_alignRight="@+id/chkRememberPassword"
/>
<Button
android:id="@+id/buttonSignIn"
android:text="Log In"
android:layout_width="124px"
android:layout_height="wrap_content"
android:layout_below="@+id/chkRememberPassword"
android:layout_alignLeft="@+id/chkRememberPassword"
/>
</TableRow>
<TextView
android:id="@+id/statusError"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</TableLayout>
</LinearLayout>
Solução
Eu sugiro que você use wrap_content no tablelayout e então você pode ter seus botões no linearlayout
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
Outras dicas
Não é possível definir mais de um layout em um único arquivo XML ... e, pelo mesmo motivo, o Android possui layout, paisagem de layout, etc. Tipo de sistema de pastas ..
O que você pode fazer é o que é explicado por 100rabh ... faça o layout universal aplicando um layout relativo e preencha as configurações dos pais ...
Caso contrário, como expliquei, você precisa fazer 2 arquivos de layout XML e colocar o layout para a paisagem na pasta Layout-Landscape, assim, o respectivo layout será automaticamente definido de acordo com a orientação do telefone ...
Espero que isso ajude você ...
Você precisa criar 2 arquivos XML:
- Um no normal
layout
pasta - Um segundo em um
res/layout-land
Para definir o layout para a orientação da paisagem. Você precisará criar ores/layout-land
pasta se ainda não existir.