Android中如何实现多个框,android几种不同对话框的实现方式
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ù)為默認選中項, :代表默認選中第一項
.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ù)為默認選中項,是一個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(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代碼如下:
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">
android:id="@+id/iv_img"
android:layout_width="dp"
android:layout_height="dp"
android:src="@drawable/ic_launcher" />
android:id="@+id/tv_item"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="dp"
android:gravity="center"
android:text="列表項" />
其實,不僅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文件代碼如下:
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">
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用戶名:"/>
android:id="@+id/et_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:hint="input name" />
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
android:id="@+id/tv_pwd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密碼:"/>
android:id="@+id/et_pwd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="input password" />
以上介紹了六種不同對話框的實現(xiàn)方式,希望對大家有所幫助。
總結(jié)
以上是生活随笔為你收集整理的Android中如何实现多个框,android几种不同对话框的实现方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: win7 x64部署和串口调试虚拟驱动t
- 下一篇: JUC种常用的辅助类
