quinta-feira, 10 de maio de 2012

Criando um Custom Dialog


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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <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" />

    <EditText
        android:id="@+id/etRetorno"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/btnChamarDialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Chamar Dialog" 
        android:onClick="ChamarDialog_click"/>

</LinearLayout>

Arquivo customdialog.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
     >

    <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" />

    <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"/>

    <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">

        <Button
            android:id="@+id/btn_Confirmar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Confirmar" />

        <Button
            android:id="@+id/btn_Cancelar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Cancelar" />
    </LinearLayout>

</RelativeLayout>

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 Circus Puzzle Free ele é um quebra-cabeça e está publicado no Android Market, agradeço a todos que baixarem, jogarem e comentarem.



Desenv com qualidade!

5 comentários:

elson costa disse...

Seus tutoriais são muito bom.
parabéns.

Será que você poderia me ajudar no seguinte código:

Tenho uma lista do tipo usuarioBean, com vários campos, codigo, email, senha, data.
como eu faço para mostra no spinner apenas um campo desses acima?

Spinner Spinner = (Spinner) textEntryView.findViewById(R.id.spinnerList);

ArrayAdapter arrayAdapter = new ArrayAdapter(context, android.R.layout.simple_spinner_item, listBean);
ArrayAdapter spinnerArrayAdapter = arrayAdapter;
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

Spinner.setAdapter(spinnerArrayAdapter);


//Método do Spinner para capturar o item selecionado
Spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

public void onItemSelected(AdapterView parent, View v, int posicao, long id) {
//pega nome pela posição
usuarioBean bean = (usuarioBean) parent.getSelectedItem();
//imprime um Toast na tela com o nome que foi selecionado
Toast.makeText(context, "Email Selecionado: " + bean.getEmail(), Toast.LENGTH_LONG).show();

final EditText editTextLogin = (EditText) textEntryView.findViewById(R.id.editTextLogin);
final EditText editTextSenha = (EditText) textEntryView.findViewById(R.id.editTextSenha);
final CheckBox checkBoxSalvarSenha = (CheckBox) textEntryView.findViewById(R.id.checkBoxSalvarSenha);

editTextLogin.setText(bean.getEmail());
editTextSenha.setText(criptografia.decriptografiaMD(bean.getSenha()));
checkBoxSalvarSenha.setSelected(verificaValor.verificaValorBoolean(bean.getSalvarSenha()));

}

public void onNothingSelected(AdapterView parent) {

}
});

Marcio de Souza disse...

Elson,

Obrigado pela visita... vou ficar devendo essa resposta agora... meu filho está para nascer e por esses dias estou com tempo zero.

Assim que sobrar um tempinho eu posto um artigo sobre isso.

Até mais...

elson costa disse...

Opa blz valeu, muito grato pela resposta, eu consegui fazer o que eu queria, depois posto o código. talves alguém precise.
valeu.

Unknown disse...

Poderia postar como resolveu?

Unknown disse...

poderia postar como resolveu