程序显示效果(图):
这一次要把里面的用到的类,弄清楚些

logindialog.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/usernameTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginTop="1dp"
android:layout_alignParentTop="true"
android:textStyle="bold"
android:text="用户名:"/>
<EditText
android:id="@+id/usernameEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="1dp"
android:layout_below="@id/usernameTextView"/>
<TextView
android:id="@+id/passwordTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp"
android:layout_below="@id/usernameEditText"
android:textStyle="bold"
android:text="密码:"/>
<EditText
android:id="@+id/passwordEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="1dp"
android:layout_below="@id/passwordTextView"/>
</RelativeLayout>
main.xml
<?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"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="登录对话框实现"
/>
<Button
android:id="@+id/loginButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="登录"/>
</LinearLayout>
AlertDialogActivity.java
package com.zeph.android.alertdialog.login;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class AlertDialogActivity extends Activity {
private Button loginButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
loginButton = (Button) findViewById(R.id.loginButton);
loginButton.setOnClickListener(new ButtonOnClickListener());
}
class ButtonOnClickListener implements OnClickListener {
@Override
public void onClick(View v) {
//Builder是AlertDialg的内部类(public static class AlertDialog.Builder)
//AlertDialog的构造方法都是protected类型所以不能直接通过new关键字来创建AlertDialog的对象。
//AlertDialog.Builder的create的方法可以创建一个AlertDialog的对象,它有点类似工厂模式。
Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);
builder.setPositiveButton("登录",new DialogInterfacePosOnClickListener());
builder.setNegativeButton("取消",new DialogInterfaceNegOnClickListener());
AlertDialog loginAlertDialog = builder.create();
loginAlertDialog.setTitle("登录对话框");
//LayoutInflater类是一个用来将XML布局文件实例化为一个相一致的View对象。
//同样采用工厂模式,使用getLayoutInflater方法去获得一个已经与当前Context相挂钩的一个
//标准LayoutInflater实例。
LayoutInflater factory = getLayoutInflater();
View loginDialogView = factory.inflate(R.layout.logindialog, null);
loginAlertDialog.setView(loginDialogView);
loginAlertDialog.show();
}
}
class DialogInterfacePosOnClickListener implements
DialogInterface.OnClickListener {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(AlertDialogActivity.this, "你点击了登录按钮",Toast.LENGTH_SHORT).show();
}
}
class DialogInterfaceNegOnClickListener implements
DialogInterface.OnClickListener {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(AlertDialogActivity.this, "你点击了取消按钮",Toast.LENGTH_SHORT).show();
}
}
}