Android-彈窗AlterDialog對話方塊使用全解析
阿新 • • 發佈:2018-12-16
主要方法:
setMessage() | 設定對話方塊內容為簡單文字 |
---|---|
setItems() | 對話款內容為簡單列表項 |
setSingleChoiceItems() | 對話方塊內容為單選列表項 |
setMultiChoiceItems() | 對話款內容為多選列表項 |
setAdapter() | 內容為自定義列表項 |
setView() | 內容為自定義view |
六種樣式分析:
- 顯示訊息提示的對話方塊(例如:是否確認關閉)
- 簡單列表對話方塊
- 單選列表對話方塊
- 多選列表對話方塊
- 自定義對標對話方塊
- 自定義View對話方塊
注:按鈕的點選事件在 MainActivity 中宣告 MainActivity的 XML 在文末給出
一、顯示訊息提示的對話方塊
效果:
實現方法:
建立 FirstService類 用於寫靜態方法
public class FirstService extends MainActivity{ public static void simple(View scource ){ AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.mMainActivity) .setTitle("你好呀~")//設定對話方塊 標題 .setIcon(R.drawable.seek02)//設定圖示 .setMessage("the sentences you want to say"); setPositiveButton(builder);//add 'yes' Button to AlertDialog setNegativeButton(builder)//add 'no' Button to AlertDialog .create() .show(); } private static AlertDialog.Builder setPositiveButton(AlertDialog.Builder builder){ // use 'setPositiveButton' method to add 'yes' Button return builder.setPositiveButton("yes", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.mMainActivity,"you click 'yes' button ",Toast.LENGTH_SHORT).show(); } }); } private static AlertDialog.Builder setNegativeButton(AlertDialog.Builder builder){ // use 'setPositiveButton' method to add 'yes' Button return builder.setNegativeButton("no", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.mMainActivity,"you click 'no' button ",Toast.LENGTH_SHORT).show(); } }); } }
在MainActivity中呼叫該方法:
public class MainActivity extends Activity { public static MainActivity mMainActivity; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mMainActivity = this; } public void send(View source){ FirstService.simple(getWindow().getDecorView()); } }
二、列表項對話方塊
// 由於Dialog 本身原因 選完後 dialog會自動關閉 如果不想自動關閉,可以:不關閉方法
效果:
具體實現:
public class FirstService extends MainActivity{
private static String[] items = new String[]{
"I believe I can fly",
"Sunshine brightly",
"I love study Java",
"Wiw cool Dialog",
};
public static void simple(View scource ){
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.mMainActivity)
.setTitle("set your list Dialog's title here")//設定對話方塊 標題
.setIcon(R.drawable.seek02)//設定圖示
.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.mMainActivity,"you click '" + items[which] + "' button ",Toast.LENGTH_SHORT).show();
return;
}
});
setPositiveButton(builder);//add 'yes' Button to AlertDialog
setNegativeButton(builder)//add 'no' Button to AlertDialog
.create()
.show();
}
private static AlertDialog.Builder setPositiveButton(AlertDialog.Builder builder){
// use 'setPositiveButton' method to add 'yes' Button
return builder.setPositiveButton("yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.mMainActivity,"you click 'yes' button ",Toast.LENGTH_SHORT).show();
}
});
}
private static AlertDialog.Builder setNegativeButton(AlertDialog.Builder builder){
// use 'setPositiveButton' method to add 'yes' Button
return builder.setNegativeButton("no", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.mMainActivity,"you click 'no' button ",Toast.LENGTH_SHORT).show();
return;
}
});
}
}
主活動中呼叫方法與(一)中類似,這裡就不給出了了
三、單選列表對話方塊
具體呼叫方法:
public static void simple(View scource ){
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.mMainActivity)
.setTitle("單選列表對話方塊")//設定對話方塊 標題
.setIcon(R.drawable.seek02)//設定圖示
.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.mMainActivity,"you click '" + items[which] + "' button ",Toast.LENGTH_SHORT).show();
}
});
setPositiveButton(builder);//add 'yes' Button to AlertDialog
setNegativeButton(builder)//add 'no' Button to AlertDialog
.create()
.show();
}
其他部分程式碼與 二 中相同,這裡就不在給出
四、多選列表對話方塊
效果:
具體實現方法:
這裡為了傳送資料 判斷使用者選了哪些選項 setPositiveButton 進行了修改
public class FirstService extends MainActivity{
private static String[] items = new String[]{
"I believe I can fly",
"Sunshine brightly",
"I love study Java",
"Wiw cool Dialog",
};
private static boolean[] multiDialog = new boolean[]{false , true , false , true};
public static void simple(View scource ){
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.mMainActivity)
.setTitle("單選列表對話方塊")//設定對話方塊 標題
.setIcon(R.drawable.seek02)//設定圖示
.setMultiChoiceItems(items, multiDialog ,null);
setPositiveButton(builder);//add 'yes' Button to AlertDialog
setNegativeButton(builder)//add 'no' Button to AlertDialog
.create()
.show();
}
private static AlertDialog.Builder setPositiveButton(AlertDialog.Builder builder){
// use 'setPositiveButton' method to add 'yes' Button
return builder.setPositiveButton("yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
for ( int i = 0 ; i < items.length ; i++ ){
if (multiDialog[i]){
Toast.makeText(MainActivity.mMainActivity,"you click '" + items[i] + "' button ",Toast.LENGTH_SHORT).show();
}
}
}
});
}
private static AlertDialog.Builder setNegativeButton(AlertDialog.Builder builder){
// use 'setPositiveButton' method to add 'yes' Button
return builder.setNegativeButton("no", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.mMainActivity,"you click 'no' button ",Toast.LENGTH_SHORT).show();
return;
}
});
}
}
呼叫方法在 一 中給出 這裡不在給出
五、自定義列表項對話方塊
效果:
簡單實現:
public class FirstService extends MainActivity{
private static String[] items = new String[]{
"I believe I can fly",
"Sunshine brightly",
"I love study Java",
"Wiw cool Dialog",
};
public static void simple(View scource ){
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.mMainActivity)
.setTitle("單選列表對話方塊")//設定對話方塊 標題
.setIcon(R.drawable.seek02)//設定圖示
.setAdapter(new ArrayAdapter<String>(mMainActivity,R.layout.cell,items),null);
setPositiveButton(builder);//add 'yes' Button to AlertDialog
setNegativeButton(builder)//add 'no' Button to AlertDialog
.create()
.show();
}
private static AlertDialog.Builder setPositiveButton(AlertDialog.Builder builder){
// use 'setPositiveButton' method to add 'yes' Button
return builder.setPositiveButton("yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.mMainActivity,"you click 'yes' button ",Toast.LENGTH_SHORT).show();
}
});
}
private static AlertDialog.Builder setNegativeButton(AlertDialog.Builder builder){
// use 'setPositiveButton' method to add 'yes' Button
return builder.setNegativeButton("no", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.mMainActivity,"you click 'no' button ",Toast.LENGTH_SHORT).show();
return;
}
});
}
}
附上 /layout/cell 佈局檔案
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:id="@+id/cell"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15dp"
android:orientation="vertical">
</TextView>
六、自定義 View 對話方塊
效果:
具體實現方法:
public class FirstService extends MainActivity{
private static TableLayout tableLayout;
public static void simple(View scource ){
tableLayout = (TableLayout) mMainActivity.getLayoutInflater().inflate(R.layout.cell,null);
AlertDialog.Builder builder = new AlertDialog.Builder(mMainActivity)
.setTitle("單選列表對話方塊")//設定對話方塊 標題
.setIcon(R.drawable.seek02)//設定圖示
.setView(tableLayout);
setPositiveButton(builder);//add 'yes' Button to AlertDialog
setNegativeButton(builder)//add 'no' Button to AlertDialog
.create()
.show();
}
private static AlertDialog.Builder setPositiveButton(AlertDialog.Builder builder){
// use 'setPositiveButton' method to add 'yes' Button
return builder.setPositiveButton("yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//do login operations here
Toast.makeText(MainActivity.mMainActivity,"you info:" + tableLayout.toString(),Toast.LENGTH_SHORT).show();
}
});
}
private static AlertDialog.Builder setNegativeButton(AlertDialog.Builder builder){
// use 'setPositiveButton' method to add 'yes' Button
return builder.setNegativeButton("no", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//do nothing here
Toast.makeText(MainActivity.mMainActivity,"you click 'no' button ",Toast.LENGTH_SHORT).show();
}
});
}
}
最後給出 cell.xml 佈局:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
android:id="@+id/cell"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TableRow>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="使用者名稱"
android:textSize="10pt"/>
<!--Users can input personal info in here-->
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="please input your account:"
android:selectAllOnFocus="true"/>
<!--if you set selectAllOnFocus 'true' your keyboard will open-->
</TableRow>
<TableRow>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Code"
android:textSize="10pt"/>
<!--Users can input personal info in here-->
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="please input your Code:"
android:selectAllOnFocus="true"/>
</TableRow>
<TableRow>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Phone"
android:textSize="10pt"/>
<!--Users can input personal info in here-->
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="please input your Phone number:"
android:selectAllOnFocus="true"/>
</TableRow>
</TableLayout>
最後給出 MainActivity的佈局檔案:
<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/idtatabHost"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<Button
android:id="@+id/send"
android:onClick="send"
android:text="點我一下 有驚喜(嚇) 。。。"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
可以看到 Button中 android:onClick="send"聲明瞭 它的點選事件