自定义一个对话框就相当于自定义了一界面
这里我用xml来配置一个需要显示的对话框
...\layout\main_login.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="240dip" android:layout_height="200dip" android:orientation="vertical" android:padding="10dip" > <!-- 控件id的命名格式推荐 控件缩写_功能模块_功能 --> <EditText android:id="@+id/et_login_username" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="请输入帐号" /> <EditText android:id="@+id/et_login_password" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="请输入密码" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="horizontal" > <Button android:id="@+id/btn_login_ok" android:layout_width="110dip" android:layout_height="wrap_content" android:text="登录" /> <Button android:id="@+id/btn_login_cancle" android:layout_width="110dip" android:layout_height="wrap_content" android:text="取消" /> </LinearLayout> </LinearLayout>
LoginActivity.java
// 省略Activity类代码 直接贴出核心代码
Button btn_ok;
Button btn_cancle;
EditText et_username;
EditText et_password;
AlertDialog dialog;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// 这里获取layout资源文件中定义的view
View loginDialog = View.inflate(this, R.layout.main_login, null);
// 通过view对象获取控件的引用
et_username = loginDialog.findViewById(R.id.et_login_username);
//...其他控件绑定同上
// 为对话框建造器绑定要建造的对话框
builder.setView(loginDialog);
// 创建对话框 并返回对话框的引用
dialog = builder.create();
dialog.show();
// 为了代码清晰省略 try catch
Thread.sleep(2*1000);
// 结束对话框
dialog.dismiss();
}
// ... 省略一些对事件监听器绑定的代码