亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

android幾種不同對話框的實現方式

2020-04-11 11:27:11
字體:
來源:轉載
供稿:網友

app中肯定是少不了與用戶交互的各種dialog,下面給大家介紹幾種提示框的提示。

一般創建一個對話框需要經過以下幾步:

  1、創建AlertDialog.Builder對象。

  2、調用AlertDialog.Builder的setTitle()或者setCustomTitle()方法設置標題。

  3、調用AlertDialog.Builder的setIcon()方法設置標題logo。

  4、調用AlertDialog.Builder的相關方法設置對話框內容。

  5、調用AlertDialog.Builder的setPositiveButton()、setNegativeButton()或setNeutralButton()方法添加多個按鈕。

  6、調用AlertDialog.Builder的create()方法創建AlertDialog對象,再調用AlertDialog對象的show()方法將該對話框顯示出來。

其中,第4步設置對話框的內容,這里有6種方法來指定:

  ?setMessage():設置對話框內容為簡單文本內容。

  ?setItems():設置對話框內容為簡單列表項。

  ?setSingleChoiceItems():設置對話框內容為單選列表項。

  ?setMultiChoiceItems():設置對話框內容為多選列表項。

  ?setAdapter():設置對話框內容為自定義列表項。

  ?setView():設置對話框內容為自定義View。

下面通過幾個實例來介紹一下AlertDialog的用法。

1、顯示提示消息的對話框。

  

/**  * 顯示提示消息的對話框  * @author codingblock --  * @param context  上下文  * @param title  對話框標題  * @param message  對話框提示內容  * @return  */  public AlertDialog.Builder simpleDialog(final Context context, String title, String message){   AlertDialog.Builder builder = new AlertDialog.Builder(context)   .setTitle(title)   .setIcon(R.drawable.ic_launcher)   .setMessage(message)   .setPositiveButton("完成", null)   .setNegativeButton("取消", null);   return builder;  }

   上面的代碼是將一個簡單提示對話框封裝成了一個方法,調用時可以省去重復代碼,直接傳遞title,message等參數即可,其中該對話框用設置了icon,title等屬性,還調用了setPositiveButton()和setNegativeButton()方法添加按鈕,因為該方法(simpleDialog())在這里僅提供調用,所以沒有實現按鈕的具體功能,可在實際調用中重寫這兩個方法從而實現具體功能。

   調用方式如下,其他幾種方式的對話框與此方法調用方式基本一致,以下就不再一一給出。

public void onClickSimple(View v){   builder = new Dialog().simpleDialog(this, "簡單對話框", "對話框內容");   builder.setPositiveButton("確定", new OnClickListener() {    @Override    public void onClick(DialogInterface arg, int arg) {     //確定    }   })   .setNegativeButton("取消", new OnClickListener() {    @Override    public void onClick(DialogInterface arg, int arg) {     //取消    }   });   builder.create().show();  }

  除此之外,AlertDialog.Builder還提供了setNeutralButton()方法來添加一個裝飾性的按鈕。因此Android的對話一共可以生成三個按鈕的對話框。

2、簡單列表項對話框

   

/**  * 簡單列表項對話框  * @author codingblock --  * @param context  上下文  * @param title  對話框標題  * @param items  對話框列表項CharSequence類型數組,也可根據需要改成其他類型  * @return  */  public AlertDialog.Builder simpleListDialog(final Context context, String title, final CharSequence[] items){   AlertDialog.Builder builder = new AlertDialog.Builder(context)   .setTitle(title)   .setIcon(R.drawable.ic_launcher)   .setItems(items, new OnClickListener() {        @Override    public void onClick(DialogInterface dialog, int which) {     Toast.makeText(context, "您選中了:"+ items[which], Toast.LENGTH_SHORT).show();    }   });   return builder;  }

  上面的代碼通過調用setItems()方法為對話框設置了多個列表項,其中setItems的第一個參數可以是Charsequence和int類型。

3、單選列表項對話框

  

/**  * 單選列表項對話框  * @author codingblock --  * @param context  上下文  * @param title  對話框標題  * @param items  對話框列表項 CharSequence類型數組  * @return  */  public AlertDialog.Builder simpleChoiceDialog(final Context context, String title, final CharSequence[] items){   AlertDialog.Builder builder = new AlertDialog.Builder(context)   .setTitle(title)   .setIcon(R.drawable.ic_launcher)   //第二個參數為默認選中項, :代表默認選中第一項   .setSingleChoiceItems(items, , new OnClickListener() {    @Override    public void onClick(DialogInterface dialog, int which) {     Toast.makeText(context, "您選中了:"+ items[which], Toast.LENGTH_SHORT).show();    }   });   return builder;  }

  以上代碼通過調用setSingleChoiceItems()方法創建了帶單選列表的對話框。調用setSingleChoiceItems()方法時既可傳入數組作為參數,也可傳入Cursor(相當于數據庫查詢結果集)作為參數,也可傳入ListAdapter作為參數。另外,如果傳入ListAdapter作為參數,則由ListAdapter來提供多個列表項組件。

4、多選列表對話框

  

    /**  * 多選列表項對話框  * @author codingblock --  * @param context  上下文  * @param title   對話框標題  * @param items  對話框列表項 CharSequence類型數組  * @param checked  對話框初始選定狀態 boolean類型數組  * @return  */  public AlertDialog.Builder multiChoiceDialog(final Context context, String title, final CharSequence[] items, final boolean[] checked){   AlertDialog.Builder builder = new AlertDialog.Builder(context)   .setTitle(title)   .setIcon(R.drawable.ic_launcher)   //第二個參數為默認選中項,是一個boolean型的數組   .setMultiChoiceItems(items, checked, null)   .setPositiveButton("完成", null)   .setNegativeButton("取消", null);   return builder;  }

  以上代碼通過調用setMultiChoiceItems()方法創建了一個多選列表的對話框。在調用setMultiChoiceItems()時既可傳入數組作為參數,也可傳入Cursor作為參數。需要注意的時在調用setMultiChoiceItems()方法添加多選列表時,還需要傳入一個boolean[]參數,該參數有兩個作用:①設置初始化時選中哪些列表項。②該boolean[]類型的參數還可用于動態的獲取多選列表項的選中狀態。

5、自定義列表項對話框

  
   

 /**  * 自定義列表項對話框  * @author codingblock --  * @param context  上下文  * @param title  對話框標題  * @param items  對話框列表項 String類型數組,也可更具需要改成其他類型  * @return  */  public AlertDialog.Builder customListDialog(final Context context, String title, String[] items){   AlertDialog.Builder builder = new AlertDialog.Builder(context)   .setTitle(title)   .setIcon(R.drawable.ic_launcher)   .setAdapter(new ArrayAdapter<String>(context, R.layout.array_item, R.id.tv_item, items), null)   .setPositiveButton("完成", null)   .setNegativeButton("取消", null);   return builder;  }

  以上代碼通過setAdapter()設置了對話框的內容,該方法需要傳入一個Adapter參數,這樣的話,就可以通過Adapter實現多個組件的繪制。其中setAdapter方法中調用的布局文件array_item.xml代碼如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:tools="http://schemas.android.com/tools"  android:id="@+id/container"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:gravity="center"  android:padding="dp"  android:orientation="horizontal">  <ImageView   android:id="@+id/iv_img"   android:layout_width="dp"   android:layout_height="dp"   android:src="@drawable/ic_launcher" />  <TextView   android:id="@+id/tv_item"   android:layout_width="fill_parent"   android:layout_height="wrap_content"   android:layout_margin="dp"   android:gravity="center"   android:text="列表項" /> </LinearLayout>

  其實,不僅setAdapter()方法可以接受Adapter作為參數,setSingleChoice()方法也可以接受Adapter參數,也就是說,使用setSingleChoice()方法也可以實現自定義列表項對話框。

6、自定義View的對話框

  

/**  * 自定義View的對話框  * @author codingblock --  * @param context  上下文  * @param title  對話框標題  */  public AlertDialog.Builder customeViewDialog(final Context context, String title){   LinearLayout loginDialog = (LinearLayout)LayoutInflater.from(context).inflate(R.layout.login_dialog, null);   AlertDialog.Builder builder = new AlertDialog.Builder(context)   .setTitle(title)   .setIcon(R.drawable.ic_launcher)   .setView(loginDialog)   .setPositiveButton("完成", null)   .setNegativeButton("取消", null);   return builder;  }

      以上代碼通過setView()方法調用自定義的布局文件顯示界面。代碼中首先顯示裝載了login_dialog.xml文件,并返回該文件對應的View,接下來程序調用了setView()方法來顯示View。

  其中的login_dialog.xml文件代碼如下:

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:tools="http://schemas.android.com/tools"  android:id="@+id/container"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:padding="dp"  android:orientation="vertical">  <LinearLayout    android:layout_width="fill_parent"   android:layout_height="wrap_content"   android:orientation="horizontal">   <TextView     android:id="@+id/tv_name"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="用戶名:"/>   <EditText     android:id="@+id/et_name"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:focusable="true"    android:hint="input name" />  </LinearLayout>  <LinearLayout    android:layout_width="fill_parent"   android:layout_height="wrap_content"   android:orientation="horizontal">   <TextView     android:id="@+id/tv_pwd"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="密碼:"/>   <EditText     android:id="@+id/et_pwd"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:hint="input password" />  </LinearLayout> </LinearLayout>

以上介紹了六種不同對話框的實現方式,希望對大家有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久激情五月丁香伊人| 国产一级揄自揄精品视频| 欧美性猛交xxxx富婆弯腰| 日韩欧美亚洲综合| 欧美精品精品精品精品免费| 国产欧美精品日韩| 91免费的视频在线播放| 91欧美日韩一区| 9.1国产丝袜在线观看| 亚洲精品欧美一区二区三区| 国产精品免费久久久久影院| 久久在精品线影院精品国产| 正在播放亚洲1区| 精品无人区太爽高潮在线播放| 97精品在线视频| 亚洲性生活视频在线观看| 69久久夜色精品国产7777| 在线观看视频亚洲| 色多多国产成人永久免费网站| 国产综合久久久久久| 中文字幕日韩免费视频| 久久综合伊人77777| 亚洲嫩模很污视频| 久久精品99久久香蕉国产色戒| 日韩中文字幕免费看| 日韩在线欧美在线国产在线| 在线观看亚洲区| 成人97在线观看视频| 精品亚洲一区二区三区四区五区| 亚洲一区二区三区香蕉| 一个人www欧美| 欧美精品18videos性欧美| 亚洲区一区二区| 91精品久久久久久久久中文字幕| 国内精品久久久| 大荫蒂欧美视频另类xxxx| 成人黄色片网站| 欧美激情二区三区| 91精品国产高清久久久久久91| 日韩性xxxx爱| 欧美日韩在线免费| 欧美—级a级欧美特级ar全黄| 欧亚精品中文字幕| 久久成人av网站| 色综合久久中文字幕综合网小说| 国产亚洲精品美女| 亚洲第一精品夜夜躁人人躁| 91美女片黄在线观看游戏| 国模精品一区二区三区色天香| 久久99精品国产99久久6尤物| 国产精品日本精品| 精品在线欧美视频| 欧美性在线视频| 日韩在线国产精品| 日韩久久精品电影| 91精品久久久久久久久久久久久| 久久久91精品国产一区不卡| 欧美专区国产专区| 欧美精品久久久久久久免费观看| 亚洲自拍小视频| 97国产精品人人爽人人做| 久久久久久国产精品久久| 伦理中文字幕亚洲| 97国产精品视频人人做人人爱| 国产一区玩具在线观看| 日韩在线免费高清视频| 亚洲成人黄色网| 国色天香2019中文字幕在线观看| 日韩激情视频在线| 亚洲欧美国产另类| 亚洲人成在线一二| 国产丝袜一区二区三区免费视频| 91久久精品国产| 欧美成年人视频| 亲爱的老师9免费观看全集电视剧| 亚洲精品影视在线观看| 欧美肥婆姓交大片| 欧美激情第三页| 国产专区精品视频| yw.139尤物在线精品视频| 狠狠综合久久av一区二区小说| 欧美另类在线播放| www.美女亚洲精品| 亚洲美女av在线播放| 成人精品一区二区三区| 精品露脸国产偷人在视频| 一区二区在线视频播放| 日韩精品极品视频| 45www国产精品网站| 午夜精品久久久久久99热| 国产精品视频公开费视频| 久99九色视频在线观看| 日韩禁在线播放| 亚洲一区二区免费在线| 日韩视频永久免费观看| 久久精彩免费视频| 国产日韩精品入口| 日韩视频欧美视频| 亚洲一区美女视频在线观看免费| 国产精品极品在线| 成人综合国产精品| 奇米影视亚洲狠狠色| 亚洲第一视频网站| 日本人成精品视频在线| 久久精品国产一区二区三区| 日韩国产精品亚洲а∨天堂免| 久热在线中文字幕色999舞| 国产免费一区二区三区香蕉精| 国外视频精品毛片| 亚洲国产精久久久久久| 久久综合免费视频影院| 日韩精品中文字幕在线播放| 久久97久久97精品免视看| 亚洲欧美国产va在线影院| 国内成人精品视频| 午夜美女久久久久爽久久| 91精品免费久久久久久久久| 成人疯狂猛交xxx| 国产精品高精视频免费| 欧美有码在线观看视频| 国产精品视频在线观看| 另类专区欧美制服同性| 欧美日韩在线免费观看| 91亚洲午夜在线| 欧美黑人巨大精品一区二区| 亚洲午夜国产成人av电影男同| 91精品国产综合久久久久久蜜臀| 亚洲国产精品网站| 欧美老女人性视频| 亚洲欧美一区二区激情| 欧美巨大黑人极品精男| 日韩av在线最新| 亚洲视频在线免费观看| 国产精品露脸自拍| 北条麻妃一区二区三区中文字幕| 欧美性猛交xxxx富婆| 青青草精品毛片| 97香蕉久久超级碰碰高清版| 91精品国产高清久久久久久| 日韩av三级在线观看| 亚洲日韩第一页| 亚洲精品理论电影| 黄色成人在线播放| 日本高清不卡在线| 亚洲人成电影网站色xx| 久久成人精品视频| 日韩在线免费视频观看| 国产91ⅴ在线精品免费观看| 国产精品久久中文| 国产精品视频999| 国产精品自产拍在线观| 日韩免费精品视频| 国产成人激情视频| 亚洲最大在线视频| 日韩久久午夜影院| 91精品国产777在线观看| 亚洲精品第一国产综合精品| 色噜噜久久综合伊人一本| 欧美激情久久久| 亚洲视频欧洲视频| 懂色av影视一区二区三区| 国产激情久久久久| 亚洲免费视频观看| 亚洲精品久久久久中文字幕二区|