Header ads

Header ads
» » Custom Alert Dialog

Custom (Tùy chỉnh) Alert Dialog trong Android

Đôi khi, chúng ta muốn hiển thị hộp thoại cho người sử dụng cho EditText, Button. Thì chúng ta phải đi định nghĩa lại lớp AlertDialog


Ví dụ: Trong ví dụ này chúng ta sẽ làm ứng dụng gồm: 1 TextView và 1 Button. Khi người sử click vào Button "Click to login" sẽ xuất hiện một Alert Dialog, trong Alert Dialog xuất hiện form  đăng nhập gồm có: Username, Password, Login, Cancel, thông tin này được lấy từ tập tin login_dialog.xml. Tiến hành tạo project, vào thư mục  res /layout -> activity_main.xml thiết kế giao diện sau:

Bước 1: Tạo một project tên là CustomAlertDialogFile->New->Android Application Project điền các thông tin ->Next ->Finish

Bước 2: Mở res -> layout -> xml (hoặc) activity_main.xml và thêm code, chúng ta sẽ tạo các đối tượng Buton trong  Linear Layout.

  <?xml version="1.0" encoding="utf-8"?>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:orientation="vertical"       android:layout_width="fill_parent"      android:layout_height="fill_parent"       android:background="#2186c6">      <TextView android:textColor="#fff"           android:textSize="20dp"          android:layout_height="wrap_content"           android:id="@+id/textView1"          android:text="Hiệp Sĩ IT Demo"           android:layout_width="wrap_content"          android:layout_gravity="center_horizontal"           android:paddingTop="10dp"          android:paddingBottom="10dp"           android:layout_weight="1">              </TextView>         <Button android:layout_width="match_parent"           android:id="@+id/btnLoginDialog"          android:text="Click to Login"           android:layout_gravity="center_vertical"          android:layout_height="wrap_content">                </Button>  </LinearLayout>

Bước 4: Tạo tập tin login_dialog.xml trong drawable

  <?xml version="1.0" encoding="utf-8"?>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:orientation="vertical"      android:layout_height="match_parent"      android:paddingLeft="10dp"       android:paddingRight="10dp"      android:background="#fff"       android:layout_width="300dp"      android:paddingTop="10dp">      <EditText android:layout_height="wrap_content"           android:id="@+id/edtUsername"          android:layout_width="match_parent">          <requestFocus></requestFocus>      </EditText>      <EditText           android:id="@+id/edtPassword"          android:layout_height="wrap_content"          android:inputType="textPassword"                   android:layout_width="match_parent">                </EditText>      <LinearLayout android:layout_width="match_parent"          android:layout_height="wrap_content"           android:id="@+id/linearLayout1">          <Button android:layout_width="wrap_content"              android:layout_height="wrap_content"               android:layout_weight="0.5"              android:id="@+id/btnLogin"              android:text="Login">                      </Button>          <Button android:layout_width="wrap_content"              android:layout_height="wrap_content"              android:layout_weight="0.5"              android:id="@+id/btnCancel"              android:text="Cancel">                     </Button>      </LinearLayout>  </LinearLayout>

Bước 4: Xử lý sự kiện trong Button "Click to login"

  public void onClick(View v) {  		// TODO Auto-generated method stub  		final EditText edtUserName, edtPassword;  		Button btnLogin, btnCancel;  		AlertDialog.Builder dialogBuilder =	new AlertDialog.Builder(this);  		LayoutInflater inflater	= this.getLayoutInflater();  		View dialogView	=	inflater.inflate(R.layout.login_dialog, (ViewGroup)findViewById(R.layout.activity_main));  		edtUserName	=	(EditText)	dialogView.findViewById(R.id.edtUsername);  		edtPassword	=	(EditText)	dialogView.findViewById(R.id.edtPassword);  		btnLogin	=	(Button)	dialogView.findViewById(R.id.btnLogin);  		btnCancel	=	(Button)	dialogView.findViewById(R.id.btnCancel);  		btnLogin.setOnClickListener(new OnClickListener() {			  			@Override  			public void onClick(View v) {  				// TODO Auto-generated method stub  				if(edtUserName.getText().equals("hiepsiit")&& edtPassword.getText().equals("hiepsiit")){  		        	Toast.makeText(MainActivity.this, "Đăng nhập thành công", Toast.LENGTH_LONG).show();     		        	finish();  		        }	  				else  					Toast.makeText(MainActivity.this, "Đăng nhập không thành công", Toast.LENGTH_LONG).show();     			}  		});  		btnCancel.setOnClickListener(new OnClickListener() {  			  			@Override  			public void onClick(View v) {  				// TODO Auto-generated method stub  				finish();  			}  		});  		dialogBuilder.setView(dialogView);  		dialogBuilder.setTitle("Đăng nhập");		  		AlertDialog b = dialogBuilder.create();  		b.show();                    	}

Toàn bộ code java:

  package hiepsiit.com.customalertdialog;    import android.app.Activity;  import android.app.AlertDialog;  import android.app.Dialog;  import android.os.Bundle;  import android.view.LayoutInflater;  import android.view.Menu;  import android.view.MenuItem;  import android.view.View;  import android.view.View.OnClickListener;  import android.view.ViewGroup;  import android.widget.Button;  import android.widget.EditText;  import android.widget.Toast;    public class MainActivity extends Activity implements OnClickListener{  	Button btnLoginDialog;  	@Override  	protected void onCreate(Bundle savedInstanceState) {  		super.onCreate(savedInstanceState);  		setContentView(R.layout.activity_main);  		btnLoginDialog = (Button) findViewById(R.id.btnLoginDialog);  	    btnLoginDialog.setOnClickListener(this);  	}    	@Override  	public boolean onCreateOptionsMenu(Menu menu) {  		// Inflate the menu; this adds items to the action bar if it is present.  		getMenuInflater().inflate(R.menu.main, menu);		   		return true;  	}  	@Override  	public void onClick(View v) {  		// TODO Auto-generated method stub  		final EditText edtUserName, edtPassword;  		Button btnLogin, btnCancel;  		AlertDialog.Builder dialogBuilder =	new AlertDialog.Builder(this);  		LayoutInflater inflater	= this.getLayoutInflater();  		View dialogView	=	inflater.inflate(R.layout.login_dialog, (ViewGroup)findViewById(R.layout.activity_main));  		edtUserName	=	(EditText)	dialogView.findViewById(R.id.edtUsername);  		edtPassword	=	(EditText)	dialogView.findViewById(R.id.edtPassword);  		btnLogin	=	(Button)	dialogView.findViewById(R.id.btnLogin);  		btnCancel	=	(Button)	dialogView.findViewById(R.id.btnCancel);  		btnLogin.setOnClickListener(new OnClickListener() {			  			@Override  			public void onClick(View v) {  				// TODO Auto-generated method stub  				if(edtUserName.getText().equals("hiepsiit")&& edtPassword.getText().equals("hiepsiit")){  		        	Toast.makeText(MainActivity.this, "Đăng nhập thành công", Toast.LENGTH_LONG).show();     		        	finish();  		        }	  				else  					Toast.makeText(MainActivity.this, "Đăng nhập không thành công", Toast.LENGTH_LONG).show();     			}  		});  		btnCancel.setOnClickListener(new OnClickListener() {  			  			@Override  			public void onClick(View v) {  				// TODO Auto-generated method stub  				finish();  			}  		});  		dialogBuilder.setView(dialogView);  		dialogBuilder.setTitle("Đăng nhập");		  		AlertDialog b = dialogBuilder.create();  		b.show();                    	}  	  	  }  

 


Download ví dụ

Ứng dụng này được phát triển bởi adt bundleandroid 4.2 sử dụng minimum sdk 11  and target sdk 21.


Kết quả khi chạy ứng dụng:

Sau đó click vào Button "Click to login":



Cập nhật công nghệ từ Youtube tại link: https://www.youtube.com/channel/UCOxeYcvZPGf-mGLYSl_1LuA/videos
Để tham gia khóa học công nghệ truy cập link: http://thuvien.hocviendaotao.com
Mọi hỗ trợ về công nghệ email: dinhanhtuan68@gmail.com

About Học viện đào tạo trực tuyến

Xinh chào bạn. Tôi là Đinh Anh Tuấn - Thạc sĩ CNTT. Email: dinhanhtuan68@gmail.com .
- Nhận đào tạo trực tuyến lập trình dành cho nhà quản lý, kế toán bằng Foxpro, Access 2010, Excel, Macro Excel, Macro Word, chứng chỉ MOS cao cấp, IC3, tiếng anh, phần mềm, phần cứng .
- Nhận thiết kế phần mềm quản lý, Web, Web ứng dụng, quản lý, bán hàng,... Nhận Thiết kế bài giảng điện tử, số hóa tài liệu...
HỌC VIỆN ĐÀO TẠO TRỰC TUYẾN:TẬN TÂM-CHẤT LƯỢNG.
«
Next
Bài đăng Mới hơn
»
Previous
Bài đăng Cũ hơn