欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

android幾種不同對話框的實現(xiàn)方式

 更新時間:2015年08月13日 11:00:59   作者:codingblock  
這篇文章介紹了android幾種不同對話框的實現(xiàn),主要包括:1、顯示提示消息的對話框.2、簡單列表項對話框。3、單選列表項對話框。4、多選列表對話框。5、自定義列表項對話框。6、自定義View的對話框,需要的朋友可以參考下

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

一般創(chuàng)建一個對話框需要經(jīng)過以下幾步:

  1、創(chuàng)建AlertDialog.Builder對象。

  2、調(diào)用AlertDialog.Builder的setTitle()或者setCustomTitle()方法設(shè)置標(biāo)題。

  3、調(diào)用AlertDialog.Builder的setIcon()方法設(shè)置標(biāo)題logo。

  4、調(diào)用AlertDialog.Builder的相關(guān)方法設(shè)置對話框內(nèi)容。

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

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

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

  ·setMessage():設(shè)置對話框內(nèi)容為簡單文本內(nèi)容。

  ·setItems():設(shè)置對話框內(nèi)容為簡單列表項。

  ·setSingleChoiceItems():設(shè)置對話框內(nèi)容為單選列表項。

  ·setMultiChoiceItems():設(shè)置對話框內(nèi)容為多選列表項。

  ·setAdapter():設(shè)置對話框內(nèi)容為自定義列表項。

  ·setView():設(shè)置對話框內(nèi)容為自定義View。

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

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

  

/**
  * 顯示提示消息的對話框
  * @author codingblock --
  * @param context  上下文
  * @param title  對話框標(biāo)題
  * @param message  對話框提示內(nèi)容
  * @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;
  }

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

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

public void onClickSimple(View v){
   builder = new Dialog().simpleDialog(this, "簡單對話框", "對話框內(nèi)容");
   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  對話框標(biāo)題
  * @param items  對話框列表項CharSequence類型數(shù)組,也可根據(jù)需要改成其他類型
  * @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;
  }

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

3、單選列表項對話框

  

/**
  * 單選列表項對話框
  * @author codingblock --
  * @param context  上下文
  * @param title  對話框標(biāo)題
  * @param items  對話框列表項 CharSequence類型數(shù)組
  * @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)
   //第二個參數(shù)為默認(rèn)選中項, :代表默認(rèn)選中第一項
   .setSingleChoiceItems(items, , new OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
     Toast.makeText(context, "您選中了:"+ items[which], Toast.LENGTH_SHORT).show();
    }
   });
   return builder;
  }

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

4、多選列表對話框

  

    /**
  * 多選列表項對話框
  * @author codingblock --
  * @param context  上下文
  * @param title   對話框標(biāo)題
  * @param items  對話框列表項 CharSequence類型數(shù)組
  * @param checked  對話框初始選定狀態(tài) boolean類型數(shù)組
  * @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)
   //第二個參數(shù)為默認(rèn)選中項,是一個boolean型的數(shù)組
   .setMultiChoiceItems(items, checked, null)
   .setPositiveButton("完成", null)
   .setNegativeButton("取消", null);
   return builder;
  }

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

5、自定義列表項對話框

  
   

 /**
  * 自定義列表項對話框
  * @author codingblock --
  * @param context  上下文
  * @param title  對話框標(biāo)題
  * @param items  對話框列表項 String類型數(shù)組,也可更具需要改成其他類型
  * @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()設(shè)置了對話框的內(nèi)容,該方法需要傳入一個Adapter參數(shù),這樣的話,就可以通過Adapter實現(xiàn)多個組件的繪制。其中setAdapter方法中調(diào)用的布局文件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作為參數(shù),setSingleChoice()方法也可以接受Adapter參數(shù),也就是說,使用setSingleChoice()方法也可以實現(xiàn)自定義列表項對話框。

6、自定義View的對話框

  

/**
  * 自定義View的對話框
  * @author codingblock --
  * @param context  上下文
  * @param title  對話框標(biāo)題
  */
  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()方法調(diào)用自定義的布局文件顯示界面。代碼中首先顯示裝載了login_dialog.xml文件,并返回該文件對應(yīng)的View,接下來程序調(diào)用了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>

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

相關(guān)文章

  • Android設(shè)備藍(lán)牙連接掃描槍獲取掃描內(nèi)容

    Android設(shè)備藍(lán)牙連接掃描槍獲取掃描內(nèi)容

    這篇文章主要為大家詳細(xì)介紹了Android設(shè)備藍(lán)牙連接掃描槍獲取掃描內(nèi)容,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 通過OpenGL ES混合模式縮放視頻緩沖區(qū)來適應(yīng)顯示尺寸

    通過OpenGL ES混合模式縮放視頻緩沖區(qū)來適應(yīng)顯示尺寸

    當(dāng)開發(fā)基于軟件模式的游戲時,通過縮放視頻緩沖區(qū)來適應(yīng)顯示尺寸是最棘手的問題之一;作為開發(fā)人員,我們必須嘗試在性能與顯示質(zhì)量之間找到最佳平衡點
    2012-12-12
  • Android?ViewPager你可能不知道的刷新操作分享

    Android?ViewPager你可能不知道的刷新操作分享

    這篇文章主要為大家詳細(xì)介紹了Android中ViewPager你可能不知道的刷新操作,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,需要的可以參考一下
    2023-05-05
  • Android實現(xiàn)對圖片放大、平移和旋轉(zhuǎn)的功能

    Android實現(xiàn)對圖片放大、平移和旋轉(zhuǎn)的功能

    現(xiàn)在很多App在查看一張圖片的原圖時,都會支持圖片的手勢縮放,手勢平移以及圖片旋轉(zhuǎn)的操作。那么今天小編就來教大家去簡單的實現(xiàn)圖片的放大、平移、旋轉(zhuǎn)的操作,有需要的可以參考借鑒。
    2016-08-08
  • Android鬧鐘設(shè)置的解決方案

    Android鬧鐘設(shè)置的解決方案

    這篇文章主要為大家詳細(xì)介紹了Android鬧鐘設(shè)置的解決方案,避免開發(fā)Android設(shè)置鬧鐘的坑,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Android編程實現(xiàn)讀取工程中的txt文件功能

    Android編程實現(xiàn)讀取工程中的txt文件功能

    這篇文章主要介紹了Android編程實現(xiàn)讀取工程中的txt文件功能,結(jié)合實例形式詳細(xì)分析了Android讀取txt文件的原理、操作步驟與相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2017-02-02
  • Android Fragment(動態(tài),靜態(tài))碎片詳解及總結(jié)

    Android Fragment(動態(tài),靜態(tài))碎片詳解及總結(jié)

    這篇文章主要介紹了Android Fragment詳解及總結(jié)的相關(guān)資料,這里對Android Fragment 動態(tài),靜態(tài)碎片進行了整理總結(jié),需要的朋友可以參考下
    2016-12-12
  • Android編程實現(xiàn)監(jiān)控各個程序流量的方法

    Android編程實現(xiàn)監(jiān)控各個程序流量的方法

    這篇文章主要介紹了Android編程實現(xiàn)監(jiān)控各個程序流量的方法,涉及Android針對應(yīng)用包的遍歷,權(quán)限控制及相關(guān)屬性操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-12-12
  • Android實現(xiàn)APP環(huán)境分離(利用Gradle)

    Android實現(xiàn)APP環(huán)境分離(利用Gradle)

    有過互聯(lián)網(wǎng)軟件開發(fā)經(jīng)驗的朋友一定對于測試環(huán)境和生產(chǎn)環(huán)境這兩個詞很是熟悉,在開發(fā)和測試階段,我們常常需要在同一個設(shè)備上同時安裝著兩套甚至多套環(huán)境的同一個應(yīng)用,便于觀察調(diào)試。所以這篇文章就來和大家分享Android利用Gradle實現(xiàn)APP環(huán)境分離的方法。
    2016-09-09
  • Android Studio的安裝及第一次啟動時的配置問題

    Android Studio的安裝及第一次啟動時的配置問題

    這篇文章主要介紹了Android Studio的安裝及第一次啟動時的配置,需要的朋友可以參考下
    2019-09-09

最新評論