Mari kita lanjutkan lagi kawaan.
Kali ini kita akan membahas bagaimana caranya untuk membuat sebuah custom dialog. Caranya, pertama kita harus membuat sebuah layout baru dan menambahkan layout tersebut pada AlertDialog dengan memanggil method setView() pada object AlertDialog.Builder kawan-kawan.
contoh custom dialog :
Baiklah, seperti biasa buka eclipse kesayangan dan buka project yang telah kita buat pada postingan sebelumnya. Selanjutnya buat sebuah layout baru (buka folder res -> klik kanan folder layout -> New -> Android XML File). Isi sesuai gambar dibawah.
Berikut source lengkap pada custom_layout :
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/editUser" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="Username" tools:ignore="TextFields,HardcodedText" > <requestFocus /> </EditText> <EditText android:id="@+id/editPass" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="Password" android:inputType="textPassword" tools:ignore="HardcodedText" /> </LinearLayout>
Selanjutnya buka activity_main.xml dan tambahkan kode berikut :
<Button android:id="@+id/btnCustom" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/btnChekBox" android:text="Dialog Custom" tools:ignore="HardcodedText" />
Lebih jelasnya, berikut source lengkapnya :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <Button android:id="@+id/btnNeutral" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="14dp" android:text="Dialog Neutral" tools:ignore="HardcodedText" /> <Button android:id="@+id/btnList" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/btnNeutral" android:text="Dialog Items" tools:ignore="HardcodedText" /> <Button android:id="@+id/btnRadioList" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/btnList" android:text="Dialog Radio List" tools:ignore="HardcodedText" /> <Button android:id="@+id/btnChekBox" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/btnRadioList" android:text="Dialog ChekBox List" tools:ignore="HardcodedText" /> <Button android:id="@+id/btnCustom" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/btnChekBox" android:text="Dialog Custom" tools:ignore="HardcodedText" /> <Button android:id="@+id/btnKeluar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/btnCustom" android:text="Keluar" tools:ignore="HardcodedText" /> </RelativeLayout>
Sekarang buka MainActivity.java dan tambahkan pula atribut bertipe Button karena tadi kita telah menambahkan sebuah button baru pada activity_main.xml. Jangan lupa deklarasikan juga 2 buah EditText yang telah kita buat pada custom_layout.xml tadi pada MainActivity.java.
Button buttonCustom; EditText user; EditText pass;
Deklarasikan button baru yang telah kita buat pada onCreate(Bundle savedInstanceState).
buttonCustom=(Button)findViewById(R.id.btnCustom);
Buat sebuah method baru untuk menampung dialog yang kita buat.
public void actionCustomDialog(){ AlertDialog.Builder builder=new AlertDialog.Builder(context); LayoutInflater inflater=getLayoutInflater(); final View view=inflater.inflate(R.layout.custom_layout, null); builder.setTitle("LOGIN"); builder.setIcon(R.drawable.ic_launcher); builder.setView(view); builder.setPositiveButton("Sign In", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub user=(EditText) view.findViewById(R.id.editUser); pass=(EditText) view.findViewById(R.id.editPass); String u=user.getText().toString(); String p=pass.getText().toString(); Toast.makeText(context,"Username : " + u +"\n" +"Password : "+ p, Toast.LENGTH_LONG).show(); } }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.cancel(); } }); AlertDialog alertDialog=builder.create(); alertDialog.show(); }
Berikutnya kita tinggal membuat event yang akan kita berikan pada button yang telah kita buat tadi. Tambahkan kode berikut pada onCreate(Bundle savedInstanceState).
buttonCustom.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub actionCustomDialog(); } });
Lebih jelasnya, berikut source lengkapnya :
package com.is.dialogtest; import java.util.ArrayList; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { Context context=this; Button buttonNeutral; Button buttonKeluar; Button buttonList; Button buttonRadioList; Button buttonChekBoxList; Button buttonCustom; EditText user; EditText pass; ArrayList<Integer> arrayList=new ArrayList<Integer>(); CharSequence items[]={"Ubuntu","Mandriva","Mint"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); buttonNeutral=(Button) findViewById(R.id.btnNeutral); buttonList=(Button) findViewById(R.id.btnList); buttonRadioList=(Button) findViewById(R.id.btnRadioList); buttonChekBoxList=(Button)findViewById(R.id.btnChekBox); buttonCustom=(Button)findViewById(R.id.btnCustom); buttonKeluar=(Button) findViewById(R.id.btnKeluar); buttonNeutral.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub actionNeutralButton(); } }); buttonList.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub actionDialogList(); } }); buttonRadioList.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub actionRadioList(); } }); buttonChekBoxList.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub actionChekBoxList(); } }); buttonCustom.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub actionCustomDialog(); } }); buttonKeluar.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub actionKeluar(); } }); } public void actionKeluar(){ AlertDialog.Builder builder=new AlertDialog.Builder(context); builder.setTitle("Konfirmasi"); builder.setMessage("Apakah Anda Akan Keluar ?"); builder.setCancelable(false); builder.setPositiveButton("Ya", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { // TODO Auto-generated method stub MainActivity.this.finish(); } }); builder.setNegativeButton("Tidak", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { // TODO Auto-generated method stub arg0.cancel(); } }); AlertDialog alertDialog=builder.create(); alertDialog.show(); } public void actionNeutralButton(){ new AlertDialog.Builder(this).setTitle("Ini Title") .setMessage("Ini Message") .setNeutralButton("Oke", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { // TODO Auto-generated method stub //Tidak melakukan apapun } }).show(); } public void actionDialogList(){ AlertDialog.Builder builder=new AlertDialog.Builder(context); builder.setTitle("Distro Linux"); builder.setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { // TODO Auto-generated method stub Toast.makeText(context, items[arg1], Toast.LENGTH_LONG).show(); } }); AlertDialog alertDialog=builder.create(); alertDialog.show(); } public void actionRadioList(){ AlertDialog.Builder builder=new AlertDialog.Builder(context); builder.setTitle("Radio Items"); builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { // TODO Auto-generated method stub Toast.makeText(context, items[arg1], Toast.LENGTH_LONG).show(); arg0.dismiss(); } }); AlertDialog alertDialog=builder.create(); alertDialog.show(); } public void actionChekBoxList(){ AlertDialog.Builder builder=new AlertDialog.Builder(context); builder.setTitle("CheckBox List"); builder.setMultiChoiceItems(items, null, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { // TODO Auto-generated method stub if(isChecked){ arrayList.add(which); }else{ arrayList.remove(Integer.valueOf(which)); } } }); builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub String sequence=""; for(int i=0;i<arrayList.size();i++){ int x=arrayList.get(i); sequence +=items[x] + "\n"; } Toast.makeText(context,sequence, Toast.LENGTH_LONG).show(); arrayList.clear(); } }); builder.setNegativeButton("No", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }); AlertDialog alertDialog=builder.create(); alertDialog.show(); } public void actionCustomDialog(){ AlertDialog.Builder builder=new AlertDialog.Builder(context); LayoutInflater inflater=getLayoutInflater(); final View view=inflater.inflate(R.layout.custom_layout, null); builder.setTitle("LOGIN"); builder.setIcon(R.drawable.ic_launcher); builder.setView(view); builder.setPositiveButton("Sign In", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub user=(EditText) view.findViewById(R.id.editUser); pass=(EditText) view.findViewById(R.id.editPass); String u=user.getText().toString(); String p=pass.getText().toString(); Toast.makeText(context,"Username : " + u +"\n" +"Password : "+ p, Toast.LENGTH_LONG).show(); } }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.cancel(); } }); AlertDialog alertDialog=builder.create(); alertDialog.show(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
Nah, selesai sudah kita membuat sebuah custom dialog. Begitulah kira-kira salah satu cara membuat custom dialog.
Oke kawan, untuk postingan kali ini ane akhiri sekian, semoga bermanfaat dan sampai jumpa di postingan berikutnya.
Download project latihannya disini.
0 comments:
Post a Comment