### 1、Dialog種類:
(1)確認對話框; ? ?(2)單選按鈕對話框; ? (3)多選按鈕對話框; ? ? ?(4)列表對話框;
### 2、Dialog常用方法:
(1)創建AlertDialog:AlertDialog.Builder中的create()方法;
(2)setTitle:設置對話框標題;
(3)setIcon:設置對話框圖標;
(4)setMessage:設置對話框內容;
(5)setView:給對話框設置自定義樣式;
(6)setItems:設置對話框要顯示的一個list,一般用于顯示幾個命令時;
(7)setMultiChoiceItems:用來設置對話框顯示一系列的復選框;
(8)setSingleChoiceItems:設置單選按鈕;
(9)setNeutralButton:設置普通按鈕;
(10)setPositiveButton:給對話框添加“確認”按鈕
(11)setNegativeButton:給對話框添加“取消”按鈕
### 3、確認對話框
~~~
findViewById(R.id.btnOK).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(
MainActivity.this);
builder.setTitle("確認對話框");
builder.setIcon(R.drawable.ic_launcher);
builder.setMessage("這是“確認對話框”的提示內容部分!");
builder.setPositiveButton("確定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "點擊了確定按鈕",
Toast.LENGTH_LONG).show();
}
});
builder.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "點擊了取消按鈕",
Toast.LENGTH_LONG).show();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
});
~~~
效果圖:

### 4、單選對話框
~~~
<span style="white-space:pre"> </span>private String[] single_list={"男","女","未知"}; //設置選項
findViewById(R.id.btnSingle).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(
MainActivity.this);
builder.setTitle("單選對話框");
builder.setIcon(R.drawable.ic_launcher);
builder.setSingleChoiceItems(single_list, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
String str=single_list[which]; //which參數
Toast.makeText(MainActivity.this, "您選擇的性別是:"+str , Toast.LENGTH_LONG).show();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
});
}
~~~
效果圖:

### 5、多選對話框
~~~
<span style="white-space:pre"> </span>private String[] multi_list={"籃球","足球","排球","乒乓球","羽毛球"};
private String like="";
findViewById(R.id.btnMulti).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(
MainActivity.this);
builder.setTitle("多選對話框——愛好");
builder.setIcon(R.drawable.ic_launcher);
builder.setMultiChoiceItems(multi_list,null,new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
// TODO Auto-generated method stub
if(isChecked){
like+=multi_list[which];
like+=",";
Toast.makeText(MainActivity.this, "您選擇了"+multi_list[which], Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(MainActivity.this, "您取消了"+multi_list[which], Toast.LENGTH_SHORT).show();
}
}
});
builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "您的愛好有:"+like, Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
});
~~~
效果圖:

### 6、列表對話框
~~~
private String[] item_list={"項目經理","技術工程師","測試","美工"};
findViewById(R.id.btnList).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(
MainActivity.this);
builder.setTitle("列表對話框——部門");
builder.setIcon(R.drawable.ic_launcher);
builder.setItems(item_list, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "您是:"+item_list[which], Toast.LENGTH_SHORT).show();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
});
~~~
效果圖:

### 7、自定義對話框:
(1)先去自定義一個dialog布局——dialog_layout.xml
~~~
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="請輸入內容" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="提交" />
</LinearLayout>
<ImageView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/item11"
android:layout_marginTop="5dp"
android:layout_gravity="center"
/>
</LinearLayout>
~~~
(2)主代碼:
~~~
findViewById(R.id.btnSelf).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//獲取自定義的對話框布局,并轉換成View對象
LayoutInflater inflater=LayoutInflater.from(MainActivity.this);
View view_dialog=inflater.inflate(R.layout.dialog_layout, null);
AlertDialog.Builder builder = new AlertDialog.Builder(
MainActivity.this);
builder.setTitle("自定義對話框");
builder.setIcon(R.drawable.ic_launcher);
builder.setView(view_dialog); //設置布局,把獲取的自定義布局傳進去
AlertDialog dialog = builder.create();
dialog.show();
}
});
~~~
效果圖:

全部代碼見:主頁——我的GitHub——AndroidStudy。
- 前言
- Java內部類
- 從一個View向一個Activity跳轉
- Android 與 SQLite
- Android工程A依賴B,B依賴C
- Android重要控件概覽(上)
- Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
- Android布局概覽
- 動態引用APK文件
- Android重要控件概覽(中)
- Android重要控件概覽(下)
- Gallery和ImageSwitcher
- Android之Toast
- Android之Dialog
- Android之Notification
- Android之Menu
- Android Menu中android:showAsAction屬性
- Android SharedPreferences存儲數據的使用方法
- Android手勢識別之GestureDetector
- 不同APP通過SharedPreferences傳遞數據(共享數據)
- 一個自定義的Topbar模板
- 關于Activity回收造成View選中不對應的問題
- Android之Fragment靜態加載