一、目标。
当点击“手机防盗”时弹出自定义的设置密码对话框。如果已经设置密码,则弹出自定义的输入密码对话框。
二、代码实现。
1、在layout文件夹下新建xml(取名setpwddialog.xml)文件用于设置自定义对话框的UI。
新建xml文件代码如下;
1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="320dip" 4 android:layout_height="wrap_content" 5 android:gravity="center" > 6 7 <TextView 8 android:id="@+id/setpwddialog_tv_title" 9 android:layout_width="300dip" 10 android:layout_height="40dip" 11 android:gravity="center" 12 android:text="设置防盗密码" 13 android:textSize="25dip" /> 14 15 <EditText 16 android:id="@+id/setpwddialog_et_pwd" 17 android:layout_width="300dip" 18 android:layout_height="40dip" 19 android:layout_below="@id/setpwddialog_tv_title" 20 android:hint="请输入密码" /> 21 22 <EditText 23 android:id="@+id/setpwddialog_et_pwd_conf" 24 android:layout_width="300dip" 25 android:layout_height="40dip" 26 android:layout_below="@id/setpwddialog_et_pwd" 27 android:hint="确认密码" /> 28 29 <Button 30 android:id="@+id/setpwddialog_bt_conf" 31 android:layout_width="130dip" 32 android:layout_height="50dip" 33 android:layout_below="@id/setpwddialog_et_pwd_conf" 34 android:layout_marginLeft="10dip" 35 android:text="确认" /> 36 37 <Button 38 android:id="@+id/setpwddialog_bt_cancel" 39 android:layout_width="130dip" 40 android:layout_height="50dip" 41 android:layout_alignTop="@id/setpwddialog_bt_conf" 42 android:layout_alignRight="@id/setpwddialog_et_pwd_conf" 43 android:layout_marginRight="10dip" 44 android:text="取消" /> 45 46 </RelativeLayout>
2、在主界面代码中新建方法(取名showSetPwdDialog),用于点击“手机防盗”时弹出自定义的对话框。在新建方法(showSetPwdDialog())中
①.通过new Builder(Context context)的方式创建出一个新的AlertDialog.Builder对象(取名builder);
②.通过View.inflate(Context context, int resource, ViewGroup root)方法获得一个View对象(取名view)。inflate方法中Context是上下文,本例中为this,int resource是所要加载的xml资源文件的id(本例中为新建的xml文件(setpwddialog.xml)),ViewGroup root是父视图组(本例中为null)。
③.通过AlertDialog.Builder对象(builder)的setView(View view)方法将inflate获得View对象(view)传入;
④.最后通过AlertDialog.Builder对象(builder)的shou()方法将对话框显示出来。
新建弹出自定义对话框的方法(showSetPwdDialog)代码如下:
1 protected void showSetPwdDialog() { 2 AlertDialog.Builder builder = new Builder(HomeActivity.this); 3 View view = View.inflate(this, R.layout.setpwddialog, null); 4 builder.setView(view); 5 builder.show(); 6 }