在Android開發中,我們經常會需要在Android介面上彈出一些對話方塊,比如詢問使用者或者讓使用者選擇。這些功能我們叫它Android Dialog對話方塊,AlertDialog實現方法為建造者模式。AlertDialog中定義的一些對話方塊往往無法滿足我們關於對話方塊的需求,這時我們就需要通過自訂對話方塊VIEW來實現需求,這裡我自訂一個登陸的提示對話方塊,效果圖顯示如下:
Layout(alertdialog自訂登陸按鈕)介面代碼:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:text="自訂登陸" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/button5" android:onClick="login"/></LinearLayout>
Layout(login_layout登陸視窗)介面:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="text" android:hint="請輸入使用者名稱" android:id="@+id/et_username"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textPassword" android:hint="請輸入密碼" android:id="@+id/et_password"/></LinearLayout>
java功能實現代碼:
public class AlertDialogDemo extends AppCompatActivity { private EditText et_username,et_password; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.alertdialog); } public void login(View v){ AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("登入"); //通過布局填充器獲login_layout View view = getLayoutInflater().inflate(R.layout.login_layout,null); //擷取兩個文本編輯框(密碼這裡不做登陸實現,僅示範) final EditText et_username = (EditText) view.findViewById(R.id.et_username); final EditText et_password = (EditText) view.findViewById(R.id.et_password); builder.setView(view);//設定login_layout為對話提示框 builder.setCancelable(false);//設定為不可取消 //設定正面按鈕,並做事件處理 builder.setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { String name = et_username.getText().toString().trim(); String pass = et_password.getText().toString().trim(); Toast.makeText(AlertDialogDemo.this,name + "正在登入....",Toast.LENGTH_SHORT).show(); } }); //設定反面按鈕,並做事件處理 builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Toast.makeText(AlertDialogDemo.this,"取消登入",Toast.LENGTH_SHORT).show(); } }); builder.show();//顯示Dialog對話方塊 }}
以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援雲棲社區。