Criando um Custom Dialog
Autor: Marcio de Souza | Publicado: 2012-05-10T17:32:00-07:00


Olá Pessoal,


Hoje vou mostrar como criar um Custom Dialog, este recurso pode ser utilizado quando você quer criar uma tela modal.

Abaixo segue um print do projeto utilizado.



Como de costume vou apresentar todos os fontes utilizados já com comentários para facilitar no aprendizado.

Arquivo main.xml

&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" &gt;

    &lt;TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Retorno do custom dialog:"
        android:textAppearance="?android:attr/textAppearanceLarge" /&gt;

    &lt;EditText
        android:id="@+id/etRetorno"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10" &gt;

        &lt;requestFocus /&gt;
    &lt;/EditText&gt;

    &lt;Button
        android:id="@+id/btnChamarDialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Chamar Dialog" 
        android:onClick="ChamarDialog_click"/&gt;

&lt;/LinearLayout&gt;


Arquivo customdialog.xml

&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
     &gt;

    &lt;TextView
        android:id="@+id/tvMens"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="10dp"
        
        android:text="Mensagem"
        android:textAppearance="?android:attr/textAppearanceMedium" /&gt;

    &lt;EditText
        android:id="@+id/etValor"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/tvMens"
        android:layout_below="@+id/tvMens"
        android:layout_marginRight="10dp"
        android:inputType="text"/&gt;

    &lt;LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
  android:layout_alignParentRight="true"
        android:layout_below="@+id/etValor"
        android:orientation="horizontal"
        android:background="#C4C4C4" 
        android:paddingTop="4dp"
        android:layout_marginTop="10dp"&gt;

        &lt;Button
            android:id="@+id/btn_Confirmar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Confirmar" /&gt;

        &lt;Button
            android:id="@+id/btn_Cancelar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Cancelar" /&gt;
    &lt;/LinearLayout&gt;

&lt;/RelativeLayout&gt;


Arquivo CustomDialogActivity.java

package br.com.EscolaDeAndroid.CustomDialog;

import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class CustomDialogActivity extends Activity {
 EditText etRetorno;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        etRetorno = (EditText) findViewById(R.id.etRetorno);
    }
    
    //Método executado quando usuário clicar no botão
    //Chamar Dialog
    public void ChamarDialog_click(View v){
     ExibeDialog();
    }
    
    private void ExibeDialog(){
        final Dialog dialog = new Dialog(this);

        dialog.setContentView(R.layout.customdialog);

        //define o título do Dialog
        dialog.setTitle("Busca de cliente:");

        //instancia os objetos que estão no layout customdialog.xml
        final Button confirmar = (Button) dialog.findViewById(R.id.btn_Confirmar);
        final Button cancelar = (Button) dialog.findViewById(R.id.btn_Cancelar);
        final EditText editText = (EditText) dialog.findViewById(R.id.etValor);
        final TextView tvMens = (TextView) dialog.findViewById(R.id.tvMens);
        
        tvMens.setText("Nome");

        confirmar.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                etRetorno.setText(editText.getText());
                
             //finaliza o dialog
             dialog.dismiss();
            }
        });

        cancelar.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
             //finaliza o dialog
                dialog.dismiss();
            }
        });
        
        //exibe na tela o dialog
     dialog.show();
         
    }
}


Abaixo seguem o resultado de nosso projeto.




Espero que seja útil para vocês este post e em breve estarei postando novidades.



Desenvolvi o jogo&nbsp;Circus Puzzle Free&nbsp;ele é um quebra-cabeça e está publicado no Android Market, agradeço a todos que baixarem, jogarem e comentarem.





Desenv com qualidade!