Dicas de Xamarin - Android

XML - Android - Xamarin
Código Fonte - Android - Xamarin
Configurações


Layout - LinearLayout
Exemplo do linear layout
Linear Layout


Comandos

int.Parse Converte uma string para número inteiro
Exemplo:
int resposta = int.Parse(edtResposta.Text);
ToString(): Converte um número para string
Exemplo:
txtResposta.Text = resposta.ToString();
SetImageResource: Carrega uma imagem em imageView
Exemplo:
imagem.SetImageResource(Resource.Drawable.rosto_feliz);
Observação: A imagem deverá estar na pasta res\drawable
Random: Classe do Visual Studio que permite gerar números randômicos (aleatórios).
Exemplo: Random sorteado = new Random(); // Cria a instância sorteado
numero1 = sorteado.Next(10) + 1; // Variável numero1 recebe o primeiro
número sorteado, de 1 até 10
return: Sai de uma estrutura condicional if
setEnabled: Permite habilitar ou desabilitar um widget. O parâmetro false, será desabilitado (bloqueado), e true, será habilitado (desbloqueado)
Exemplo:
btnVerificar.setEnabled(false);
AlertDialog: Permite a exibição de uma caixa de mensagem
Exemplo:
private void exibirMensagem(string titulo, string texto) // Criação do método com dois parâmetros: titulo e texto
{
AlertDialog.Builder mensagem = new AlertDialog.Builder(this); // Instancia a classe AlertDialog
mensagem.SetMessage(titulo); // Recebe o parâmetro mensagem
mensagem.SetTitle(texto); // Recebe o parâmetro texto
mensagem.SetCancelable(false); // Não permite clicar fora da caixa de mensagem
mensagem.SetPositiveButton("Sair", delegate { Sair(); }); // Executa o método Sair
mensagem.Show();
}

private void Sair()
{
AlertDialog.Builder mensagem = new AlertDialog.Builder(this);
mensagem.Show(); // Exibe a caixa
this.Finish(); // Sai da aplicação
}



XML - Android

android:maxLines="3" --> Permite que em textview, sejam exibidas três linhas
android:singleLine="false" --> Senão utilizar como false, não serão exibidas as 3 linhas
android:src="@drawable/ic_launcher" --> Exibe imagem
android:gravity="center_horizontal" --> Centralizar o layout
android:layout_width="wrap_content" --> wrap content se ajusta de acordo com o conteúdo
android:background="#FFFF1111" --> Cor de fundo do widget
android:src="@drawable/tabuada" /> --> Exibe imagem (a mesma deverá dentro da pasta res\drawable)
android:textSize="22" --> Tamanho da fonte
android:textColor="#ff00ff" --> Cor da fonte
android:textAppearance="?android:attr/textAppearanceSmall" --> Tamanho do textView pequeno
android:textAppearance="?android:attr/textAppearanceMedium" --> Tamanho do textView médio
android:textAppearance="?android:attr/textAppearanceLarge" --> Tamanho do textView grande
android:text="Informe seu nome completo" --> Texto que será exibido na tela do smartfone
android:id="@+id/txtTitulo" --> Identificação do widget (nome interno do mesmo)
android:paddingTop="20dp" --> Distância em relação a parte superior do widget
android:inputType="numberDecimal" --> Configura o widget ediText para receber somente números, com casas decimais
android:layout_gravity="center" --> centraliza o widget
android:minWidth="25px" --> Valor mínimo do widget
android:minHeight="25px" --> Valor máximo do widget
android:layout_weight ="3" --> divide proporcionalmente um layout
android:textStyle="bold" --> Negrito


Android - Código fonte

Listview

ListView lvLista = FindViewById<ListView>(Resource.Id.lvLista); --> Declara o widget ListView criando a instância lvLista
List<string> nomes = new List<string>()
{
"José","Maria","Matheus","Pedro","Thiago","Madalena","Ashtar","Adão","Eva","Abel"
};
Observação: Foi criada o array com os nomes que serão exbidos no listview
meuAdaptador adaptador = new meuAdaptador(this, nomes); // Cria a instância para receber os nomes definidos no array

ArrayAdapter<string> adaptador = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleExpandableListItem1,nomes); // Associa ao adaptador os nomes

lvLista.Adapter = adaptador; // Exibe no listview


Abrir nova atividade

Button btnAbrir = FindViewById<Button>(Resource.Id.btnAtividade2);
btnAbrir.Click += delegate // Cria o evento click
{
// Abrir nova atividade
StartActivity(typeof(segunda));
};


Fechar uma atividade
Button btnFechar = FindViewById<Button>(Resource.Id.btnFechar);
btnFechar.Click += delegate
{
// Fecha a atividade
this.Finish();
};


Passar informações entre atividades

Atividade MainActivity

// Buscar os widgets
EditText edtNome = FindViewById<EditText>(Resource.Id.edtNome);
Button btnExecutar = FindViewById<Button>(Resource.Id.btnExecutar);

// Evento click do botão
btnExecutar.Click += delegate
{
// Para a instrução Intent, é utilizado a using: using Android.Content;
var atividadeSegunda = new Intent(this, typeof(segunda));
atividadeSegunda.PutExtra("nome", edtNome.Text);
StartActivity(atividadeSegunda);
};

Atividade Segunda

// Buscar informação proveniente da atividade main
TextView txtnomeFinal = FindViewById<TextView>(Resource.Id.txtnomeFinal);
txtnomeFinal.Text = Intent.GetStringExtra("nome");


Arquivo Strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Nome do Projeto</string>
<string name="texto_textview">Este é o texto da textview</string>
<string name="texto_do_botao">Executar</string>
</resources>


Exibe o conteúdo do arquivo Strings.xml
this.Title = GetString(Resource.String.app_name); // Exibe o título da aplicação de acordo com o conteúdo armazenado o arquivo strings.xml

// Busca os widgets
TextView Texto = FindViewById<TextView>(Resource.Id.txtTexto);
Button btnExecutar = FindViewById<Button>(Resource.Id.btnExecutar);

Texto.Text = GetString(Resource.String.texto_textview); // GetString recupera o que foi armazenado no arquivo Strings.xml, e passa para o TextView
btnExecutar.Text = GetString(Resource.String.texto_do_botao); // GetString recupera o que foi armazenado no arquivo Strings.xml, e passa para o Button


Não exibir o nome da aplicação na parte superior do aplicativo

RequestWindowFeature(WindowFeatures.NoTitle); // Não exibe o título da aplicação
// Tem que adicionar a using: using Android.Views;


Configurações

Android Manifest
Permitir a gravação de arquivos, em qualquer formato (arquivos de textos, ou de banco de dados)
WRITE_EXTERNAL_STORAGE