Adicionando botões
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure you want to exit?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
MyActivity.this.finish();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
Primeiro, adicione uma mensagem para o diálogo com setMessage(CharSequence). Então continue o encadeamento de métodos e configure o diálogo para ser not cancelable (não cancelável, para que o usuário não possa fechar o diálogo pressionando o botão de voltar) com o método setCancelable(boolean). Para cada botão, use um dos métodos dentro de set...Button(), como setPositiveButton(), que aceita o nome para o botão e um DialogInterface.OnClickListener que define a ação a ser tomada quando o usuário seleciona o botão.
Nota: Você só pode adicionar um botão de cada tipo de um AlertDialog. Ou seja, não é possível ter mais que um botão do tipo positivo. Isso limita o número de botões possíveis a três: positivo, neutro ou negativo. Esses nomes são tecnicamente irrelevantes para a função dos botões, mas você deve manter um controle do que cada um deles faz.
Adicionando uma lista
Para criar um AlertDialog() com uma lista de itens selecionáveis como o mostrado na imagem seguinte, use o método setItems():
Adicionando checkboxes e radio buttons
Para criar uma lista de itens de multipla escolha (checkboxes) ou itens de escolha única (radio buttons) dentro de um diálogo, use o método setMultiChoiceItems() e setSingleChoiceItems(), respectivamente. Se você criar uma dessas listas selecionáveis no método callback onCreateDialog() , o Android gerencia o estado para você. Enquanto a atividade estiver ativa, o diálogo se lembrará das opções que foram selecionadas anteriormente, mas quando o usuário sair da atividade, a seleção será perdida.
Nota: Para salvar uma seleção quando um usuário sair da atividade ou pausá-la, você deve salvar e restaurar as configurações através do ciclo de vida da atividade. Para permanentemente salvar a seleção, mesmo que o processo da atividade corrente tenha sido encerrado por completo, você precisará fazê-lo em algum tipo de banco de dados, usando técnicas de Data Storage.
Para criar um AlertDialog com uma lista de itens de escolha única, use o código abaixo para isso:
Um ProgressDialog é uma extensão de AlertDialog que pode mostrar uma animação de progresso na forma de um círculo giratório, quando uma tarefa tem o progresso onde não se pode definir o término dele, ou uma barra de progresso, para uma tarefa com progresso definido. O diálogo pode também prover botões, como um botão de cancelar download, pode exemplo.
Abrir um diálogo de progresso é tão simples quanto chamar ProgressDialog.show(). Por exemplo, o diálogo de progresso mostrado na imagem ao lado pode ser facilmente alcançada sem ter de se gerenciar o diálogo através de onCreateDialog(int), como mostrado abaixo:
O primeiro parâmetro é o contexto da aplicação, o segundo é o título para o diálogo (que foi deixado em branco), o terceiro a mensagem em si e o último parâmetro é se o progresso é inteterminado ou não.
O valor padrão para o diálogo de progresso é o da imagem acima, com o círculo giratório. Se você quer criar uma barra de progresso que mostre o progresso à medida que vai sendo realizada a tarefa, mais código é necessário, como mostrado na próxima seção.
Mostrando um progress bar.
Para mostrar uma progressão com uma barra de progressão animada:
2) Configure o layout acima como a view de conteúdo para o diálogo e defina o conteúdo para o ImageView e o elemento TextView.
Nota: Você só pode adicionar um botão de cada tipo de um AlertDialog. Ou seja, não é possível ter mais que um botão do tipo positivo. Isso limita o número de botões possíveis a três: positivo, neutro ou negativo. Esses nomes são tecnicamente irrelevantes para a função dos botões, mas você deve manter um controle do que cada um deles faz.
Adicionando uma lista
Para criar um AlertDialog() com uma lista de itens selecionáveis como o mostrado na imagem seguinte, use o método setItems():
final CharSequence[] items = {"Red", "Green", "Blue"};Primeiro, adicione um título ao diálogo com setTitle(CharSequence). Então, adicione os itens selecionáveis com setItems(), que aceita um array de itens a serem mostrados e um DialogInterface.OnClickListener que define a nação a ser tomada quando o usuário seleciona um item.
AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("Pick a color");builder.setItems(items, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show(); }});AlertDialog alert = builder.create();
Adicionando checkboxes e radio buttons
Para criar uma lista de itens de multipla escolha (checkboxes) ou itens de escolha única (radio buttons) dentro de um diálogo, use o método setMultiChoiceItems() e setSingleChoiceItems(), respectivamente. Se você criar uma dessas listas selecionáveis no método callback onCreateDialog() , o Android gerencia o estado para você. Enquanto a atividade estiver ativa, o diálogo se lembrará das opções que foram selecionadas anteriormente, mas quando o usuário sair da atividade, a seleção será perdida.
Nota: Para salvar uma seleção quando um usuário sair da atividade ou pausá-la, você deve salvar e restaurar as configurações através do ciclo de vida da atividade. Para permanentemente salvar a seleção, mesmo que o processo da atividade corrente tenha sido encerrado por completo, você precisará fazê-lo em algum tipo de banco de dados, usando técnicas de Data Storage.
Para criar um AlertDialog com uma lista de itens de escolha única, use o código abaixo para isso:
final CharSequence[] items = {"Red", "Green", "Blue"};Criando um ProgressDialog
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a color");
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
}
});
AlertDialog alert = builder.create();
Um ProgressDialog é uma extensão de AlertDialog que pode mostrar uma animação de progresso na forma de um círculo giratório, quando uma tarefa tem o progresso onde não se pode definir o término dele, ou uma barra de progresso, para uma tarefa com progresso definido. O diálogo pode também prover botões, como um botão de cancelar download, pode exemplo.
Abrir um diálogo de progresso é tão simples quanto chamar ProgressDialog.show(). Por exemplo, o diálogo de progresso mostrado na imagem ao lado pode ser facilmente alcançada sem ter de se gerenciar o diálogo através de onCreateDialog(int), como mostrado abaixo:
ProgressDialog dialog = ProgressDialog.show(MyActivity.this, "",
"Loading. Please wait...", true);
O primeiro parâmetro é o contexto da aplicação, o segundo é o título para o diálogo (que foi deixado em branco), o terceiro a mensagem em si e o último parâmetro é se o progresso é inteterminado ou não.
O valor padrão para o diálogo de progresso é o da imagem acima, com o círculo giratório. Se você quer criar uma barra de progresso que mostre o progresso à medida que vai sendo realizada a tarefa, mais código é necessário, como mostrado na próxima seção.
Mostrando um progress bar.
Para mostrar uma progressão com uma barra de progressão animada:
- Inicialize o ProgressDialog com um construtor de classe, ProgressDialog(Context).
- Configure o estilo da progressão como "STYLE_HORIZONTAL" com setProgressStyle(int) e configure outros aspectos, como a mensagem.
- Quando estiver pronto para mostrar o diálogo, chame show() e retorne o ProgressDialog para o onCreateDialog(int).
- Você pode incrementar o progresso a ser mostrado na barra chamando ou setProgress(int) com o valor do percentual completado até então ou incrementeProgressBy(int) com um valor para o total de percentual a ser avançado na barra.
Um exemplo seria:
ProgressDialog progressDialog;
progressDialog = new ProgressDialog(mContext);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setMessage("Loading...");
progressDialog.setCancelable(false);
Criando um diálogo customizado
Se você quer um diálogo com design customizado, você pode criar seu próprio layout para a janela de diálogo com layout e elementos widget internos a este. Após você ter definido o layout, passe o objeto View root ou o ID do recurso de layout para setContentView(View).
Por exemplo, para se criar o diálogo ao lado:
1) Crie um layout XML e salve-o como custom_dialog.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
>
<ImageView android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="10dp"
/>
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textColor="#FFF"
/>
</LinearLayout>
2) Configure o layout acima como a view de conteúdo para o diálogo e defina o conteúdo para o ImageView e o elemento TextView.
Context mContext = getApplicationContext();
Dialog dialog = new Dialog(mContext);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("Custom Dialog");
TextView text = (TextView) dialog.findViewById(R.id.text);3) É isso.
text.setText("Hello, this is a custom dialog!");
ImageView image = (ImageView) dialog.findViewById(R.id.image);
image.setImageResource(R.drawable.android);
1 comentários:
Muito útil. Obrigado.
Postar um comentário