文章阅读
隐藏侧栏
随便看看
Android入门之AlertDialog
- Android
- 2011-3-1
- 413
程序运行的截图:

main.xml的源码:
1
<?xml version="1.0" encoding="utf-8"?>
2
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3
android:orientation="vertical"
4
android:layout_width="fill_parent"
5
android:layout_height="fill_parent"
6
>
7
8
<Button android:id="@+id/Button01" android:layout_height="wrap_content" android:text="非Layout型对话框" android:layout_width="fill_parent"></Button>
9
<Button android:id="@+id/Button02" android:layout_height="wrap_content" android:text="Layout型对话框" android:layout_width="fill_parent"></Button><View android:id="@+id/View01" android:layout_width="wrap_content" android:layout_height="wrap_content"></View>
10
11
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?> 2
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3
android:orientation="vertical" 4
android:layout_width="fill_parent" 5
android:layout_height="fill_parent" 6
> 7
8
<Button android:id="@+id/Button01" android:layout_height="wrap_content" android:text="非Layout型对话框" android:layout_width="fill_parent"></Button> 9
<Button android:id="@+id/Button02" android:layout_height="wrap_content" android:text="Layout型对话框" android:layout_width="fill_parent"></Button><View android:id="@+id/View01" android:layout_width="wrap_content" android:layout_height="wrap_content"></View> 10
11
</LinearLayout>下图是非Layout型对话框,直接使用AlertDialog

下图是使用了Layout的对话框,可以自定义控件,实现更复杂的对话框

dialoglayout.xml的源码:
1
<?xml version="1.0" encoding="utf-8"?>
2
3
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
4
android:layout_width="fill_parent" android:layout_height="wrap_content"
5
android:orientation="vertical">
6
<EditText android:layout_height="wrap_content"
7
android:layout_width="fill_parent" android:layout_marginLeft="20dip"
8
android:layout_marginRight="20dip" android:textAppearance="?android:attr/textAppearanceMedium" android:id="@+id/edtInput"/>
9
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?> 2
3
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 4
android:layout_width="fill_parent" android:layout_height="wrap_content" 5
android:orientation="vertical"> 6
<EditText android:layout_height="wrap_content" 7
android:layout_width="fill_parent" android:layout_marginLeft="20dip" 8
android:layout_marginRight="20dip" android:textAppearance="?android:attr/textAppearanceMedium" android:id="@+id/edtInput"/> 9
</LinearLayout>程序源码:
1
package com.testAlertDialog;
2
3
import android.app.Activity;
4
import android.app.AlertDialog;
5
import android.content.Context;
6
import android.content.DialogInterface;
7
import android.os.Bundle;
8
import android.view.Gravity;
9
import android.view.LayoutInflater;
10
import android.view.View;
11
import android.view.View.OnClickListener;
12
import android.widget.Button;
13
import android.widget.EditText;
14
import android.widget.PopupWindow;
15
16
17
public class testAlertDialog extends Activity {
18
Button btnShowDialog;
19
Button btnShowDialog_Layout;
20
/** Called when the activity is first created. */
21
@Override
22
public void onCreate(Bundle savedInstanceState) {
23
super.onCreate(savedInstanceState);
24
setContentView(R.layout.main);
25
//定义按钮
26
btnShowDialog=(Button)this.findViewById(R.id.Button01);
27
btnShowDialog.setOnClickListener(new ClickEvent());
28
btnShowDialog_Layout=(Button)this.findViewById(R.id.Button02);
29
btnShowDialog_Layout.setOnClickListener(new ClickEvent());
30
}
31
32
33
//统一处理按键事件
34
class ClickEvent implements OnClickListener{
35
36
@Override
37
public void onClick(View v) {
38
// TODO Auto-generated method stub
39
if(v==btnShowDialog)
40
showDialog(testAlertDialog.this);
41
42
else if(v==btnShowDialog_Layout)
43
showDialog_Layout(testAlertDialog.this);
44
45
}
46
47
}
48
49
//显示基本的AlertDialog
50
private void showDialog(Context context) {
51
AlertDialog.Builder builder = new AlertDialog.Builder(context);
52
builder.setIcon(R.drawable.icon);
53
builder.setTitle("Title");
54
builder.setMessage("Message");
55
builder.setPositiveButton("Button1",
56
new DialogInterface.OnClickListener() {
57
public void onClick(DialogInterface dialog, int whichButton) {
58
setTitle("点击了对话框上的Button1");
59
}
60
});
61
builder.setNeutralButton("Button2",
62
new DialogInterface.OnClickListener() {
63
public void onClick(DialogInterface dialog, int whichButton) {
64
setTitle("点击了对话框上的Button2");
65
}
66
});
67
builder.setNegativeButton("Button3",
68
new DialogInterface.OnClickListener() {
69
public void onClick(DialogInterface dialog, int whichButton) {
70
setTitle("点击了对话框上的Button3");
71
}
72
});
73
builder.show();
74
}
75
76
77
//显示基于Layout的AlertDialog
78
private void showDialog_Layout(Context context) {
79
LayoutInflater inflater = LayoutInflater.from(this);
80
final View textEntryView = inflater.inflate(
81
R.layout.dialoglayout, null);
82
final EditText edtInput=(EditText)textEntryView.findViewById(R.id.edtInput);
83
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
84
builder.setCancelable(false);
85
builder.setIcon(R.drawable.icon);
86
builder.setTitle("Title");
87
builder.setView(textEntryView);
88
builder.setPositiveButton("确认",
89
new DialogInterface.OnClickListener() {
90
public void onClick(DialogInterface dialog, int whichButton) {
91
setTitle(edtInput.getText());
92
}
93
});
94
builder.setNegativeButton("取消",
95
new DialogInterface.OnClickListener() {
96
public void onClick(DialogInterface dialog, int whichButton) {
97
setTitle("");
98
}
99
});
100
builder.show();
101
}
102
}
package com.testAlertDialog; 2
3
import android.app.Activity; 4
import android.app.AlertDialog; 5
import android.content.Context; 6
import android.content.DialogInterface; 7
import android.os.Bundle; 8
import android.view.Gravity; 9
import android.view.LayoutInflater; 10
import android.view.View; 11
import android.view.View.OnClickListener; 12
import android.widget.Button; 13
import android.widget.EditText; 14
import android.widget.PopupWindow; 15
16
17
public class testAlertDialog extends Activity { 18
Button btnShowDialog; 19
Button btnShowDialog_Layout; 20
/** Called when the activity is first created. */ 21
@Override 22
public void onCreate(Bundle savedInstanceState) { 23
super.onCreate(savedInstanceState); 24
setContentView(R.layout.main); 25
//定义按钮 26
btnShowDialog=(Button)this.findViewById(R.id.Button01); 27
btnShowDialog.setOnClickListener(new ClickEvent()); 28
btnShowDialog_Layout=(Button)this.findViewById(R.id.Button02); 29
btnShowDialog_Layout.setOnClickListener(new ClickEvent()); 30
} 31
32
33
//统一处理按键事件 34
class ClickEvent implements OnClickListener{ 35
36
@Override 37
public void onClick(View v) { 38
// TODO Auto-generated method stub 39
if(v==btnShowDialog) 40
showDialog(testAlertDialog.this); 41
42
else if(v==btnShowDialog_Layout) 43
showDialog_Layout(testAlertDialog.this); 44
45
} 46
47
} 48
49
//显示基本的AlertDialog 50
private void showDialog(Context context) { 51
AlertDialog.Builder builder = new AlertDialog.Builder(context); 52
builder.setIcon(R.drawable.icon); 53
builder.setTitle("Title"); 54
builder.setMessage("Message"); 55
builder.setPositiveButton("Button1", 56
new DialogInterface.OnClickListener() { 57
public void onClick(DialogInterface dialog, int whichButton) { 58
setTitle("点击了对话框上的Button1"); 59
} 60
}); 61
builder.setNeutralButton("Button2", 62
new DialogInterface.OnClickListener() { 63
public void onClick(DialogInterface dialog, int whichButton) { 64
setTitle("点击了对话框上的Button2"); 65
} 66
}); 67
builder.setNegativeButton("Button3", 68
new DialogInterface.OnClickListener() { 69
public void onClick(DialogInterface dialog, int whichButton) { 70
setTitle("点击了对话框上的Button3"); 71
} 72
}); 73
builder.show(); 74
} 75
76
77
//显示基于Layout的AlertDialog 78
private void showDialog_Layout(Context context) { 79
LayoutInflater inflater = LayoutInflater.from(this); 80
final View textEntryView = inflater.inflate( 81
R.layout.dialoglayout, null); 82
final EditText edtInput=(EditText)textEntryView.findViewById(R.id.edtInput); 83
final AlertDialog.Builder builder = new AlertDialog.Builder(context); 84
builder.setCancelable(false); 85
builder.setIcon(R.drawable.icon); 86
builder.setTitle("Title"); 87
builder.setView(textEntryView); 88
builder.setPositiveButton("确认", 89
new DialogInterface.OnClickListener() { 90
public void onClick(DialogInterface dialog, int whichButton) { 91
setTitle(edtInput.getText()); 92
} 93
}); 94
builder.setNegativeButton("取消", 95
new DialogInterface.OnClickListener() { 96
public void onClick(DialogInterface dialog, int whichButton) { 97
setTitle(""); 98
} 99
}); 100
builder.show(); 101
} 102
}


