(linha 4), que indica a sua altura. Há dois valores importantes para estes atributos que são o match_parent e o wrap_content. O primeiro valor indica que o
tamanho deve ser o mesmo que o do elemento-pai enquanto o segundo indica que
o tamanho deve ser grande o suficiente para abrigar o conteúdo a ser exibido.
Note
que
na
linha
5
utilizamos
um
outro
atributo,
que
é
o
android:gravity="center_vertical".
Ele indica que o layout deve fi-
car centralizado verticalmente na tela. A orientação que desejamos é informada no atributo android:orientation.
O próximo passo é exibir a logo da aplicação.
Para isso, podemos in-
cluir um
ImageView, que deve ficar ao centro e mostrar a imagem de
android:src="@drawable/logo". Com isso, basta ter uma imagem em um arquivo logo.png e colocá-la nos diretórios drawable do projeto.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout ...>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="50dp"
android:src="@drawable/logo" />
</LinearLayout>
Agora, podemos incluir os campos para que o usuário forneça seu login e senha para entrar na aplicação. Precisaremos de componentes TextView para mostrar a descrição dos campos, como se fossem labels, e também do EditText para o campo onde o usuário digitará seu login:
58
Casa do Código
Capítulo 3. Domine os principais elementos de Interface Gráfica
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout ...>
<!-- Logo -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/usuario" />
<EditText
android:id="@+id/usuario"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text" >
<requestFocus />
</EditText>
</LinearLayout>
Repare no EditText: definimos um atributo android:inputType, para in-
dicar que esse campo é uma simples entrada de texto, ou seja, caracteres alfanumé-
ricos. Também utilizamos o <requestFocus> para que este campo receba o foco quando a tela for exibida.
Com isso, para fazermos o campo de senha, basta criarmos um novo EditText
cujo android:inputType seja do tipo textPassword:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout ...>
<!-- Logo -->
<!-- Campo de login do usuário -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/senha" />
<EditText
android:id="@+id/senha"
android:layout_width="match_parent"
59
3.1. LinearLayout
Casa do Código
android:layout_height="wrap_content"
android:inputType="textPassword" />
</LinearLayout>
Como adicionar rolagem vertical
Os layouts do Android não suportam por padrão a rolagem ver-
tical da tela. Para ter essa funcionalidade, é necessário utilizar uma
ScrollView e colocar o layout que precisa da rolagem como seu
elemento-filho.
Além dos tipos text e textPassword, também existem diversos outros, tais
como o number, que indica números e faz com que o teclado exibido para digitação seja apenas o teclado numérico; phone, para números de telefone; date e time, para informações de data e hora. Para ver todas as opções disponíveis consulte a documentação em http://developer.android.com/reference.
Agora basta fazermos o botão entrar, usando a Tag Button:
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:onClick="entrarOnClick"
android:text="@string/entrar" />
Nesse botão, vinculamos a ação entrarOnClick que fará a autenticação do
usuário e, caso seja bem-sucedida, iniciará a activity da dashboard. Vamos implementar este método na BoaViagemActivity que utilizará o layout da tela de
login que acabamos de definir.
public class BoaViagemActivity extends Activity {
public void entrarOnClick(View v) { }
}
Note que fizemos o método entrarOnClick recebendo como parâmetro um
objeto do tipo View. Vamos implementar a lógica do login dentro desse método
60
Casa do Código
Capítulo 3. Domine os principais elementos de Interface Gráfica
em instantes. Mas primeiro, faremos com que, quando a BoaViagemActivity
seja criada, ela fique associada ao layout do login. Para isso, vamos reescrever o mé-
todo onCreate e invocar o método setContentView, passando uma referência
ao layout de login.
public class BoaViagemActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
}
public void entrarOnClick(View v) { }
}
A classe R
A classe R é gerada automaticamente pelo ADT, utilizando as ferra-
mentas do SDK, e serve para mapear os recursos existentes no aplicativo
na forma de constantes. Dessa forma, podemos referenciar facilmente
arquivos de layout, widgets e outros tipos de recursos como strings::
e arrays.
Nesse começo, faremos uma autenticação simples, na qual o usuário informado
deve ser leitor e a senha deve ser 123. Mas para isso temos que recuperar uma referência para os campos de usuário e senha que estão na tela, para termos acesso aos textos presentes nos campos. No próprio método onCreate, vamos recuperar