2018-01-02 09:14:11 1575瀏覽
在開(kāi)發(fā)過(guò)程中,與用戶(hù)交互式免不了會(huì)用到對(duì)話(huà)框以實(shí)現(xiàn)更好的用戶(hù)體驗(yàn),所以掌握幾種對(duì)話(huà)框的實(shí)現(xiàn)方法還是非常有必要的。在看具體實(shí)例之前先對(duì)AlertDialog做一個(gè)簡(jiǎn)單介紹。AlertDialog是功能最豐富、實(shí)踐應(yīng)用最廣的對(duì)話(huà)框,它可以生成各種內(nèi)容的對(duì)話(huà)框。但實(shí)際上AlertDialog生成的對(duì)話(huà)框總體可分為以下4個(gè)區(qū)域:圖標(biāo)區(qū)、標(biāo)題區(qū)、內(nèi)容區(qū)、按鈕區(qū)。
一般創(chuàng)建一個(gè)對(duì)話(huà)框需要經(jīng)過(guò)以下幾步:
1、創(chuàng)建AlertDialog.Builder對(duì)象。
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è)置對(duì)話(huà)框內(nèi)容。
5、調(diào)用AlertDialog.Builder的setPositiveButton()、setNegativeButton()或setNeutralButton()方法添加多個(gè)按鈕。
6、調(diào)用AlertDialog.Builder的create()方法創(chuàng)建AlertDialog對(duì)象,再調(diào)用AlertDialog對(duì)象的show()方法將該對(duì)話(huà)框顯示出來(lái)。
其中,第4步設(shè)置對(duì)話(huà)框的內(nèi)容,這里有6種方法來(lái)指定:
·setMessage():設(shè)置對(duì)話(huà)框內(nèi)容為簡(jiǎn)單文本內(nèi)容。
·setItems():設(shè)置對(duì)話(huà)框內(nèi)容為簡(jiǎn)單列表項(xiàng)。
·setSingleChoiceItems():設(shè)置對(duì)話(huà)框內(nèi)容為單選列表項(xiàng)。
·setMultiChoiceItems():設(shè)置對(duì)話(huà)框內(nèi)容為多選列表項(xiàng)。
·setAdapter():設(shè)置對(duì)話(huà)框內(nèi)容為自定義列表項(xiàng)。
·setView():設(shè)置對(duì)話(huà)框內(nèi)容為自定義View。
下面通過(guò)幾個(gè)實(shí)例來(lái)介紹一下AlertDialog的用法。
1、顯示提示消息的對(duì)話(huà)框。
#FormatImgID_0#
/**
*顯示提示消息的對(duì)話(huà)框
*@authorcodingblock2015-8-11
*@paramcontext上下文
*@paramtitle對(duì)話(huà)框標(biāo)題
*@parammessage對(duì)話(huà)框提示內(nèi)容
*@return
*/
publicAlertDialog.BuildersimpleDialog(finalContextcontext,Stringtitle,Stringmessage){
AlertDialog.Builderbuilder=newAlertDialog.Builder(context)
.setTitle(title)
.setIcon(R.drawable.ic_launcher)
.setMessage(message)
.setPositiveButton("完成",null)
.setNegativeButton("取消",null);
returnbuilder;
}
上面的代碼是將一個(gè)簡(jiǎn)單提示對(duì)話(huà)框封裝成了一個(gè)方法,調(diào)用時(shí)可以省去重復(fù)代碼,直接傳遞title,message等參數(shù)即可,其中該對(duì)話(huà)框用設(shè)置了icon,title等屬性,還調(diào)用了setPositiveButton()和setNegativeButton()方法添加按鈕,因?yàn)樵摲椒?simpleDialog())在這里僅提供調(diào)用,所以沒(méi)有實(shí)現(xiàn)按鈕的具體功能,可在實(shí)際調(diào)用中重寫(xiě)這兩個(gè)方法從而實(shí)現(xiàn)具體功能。
調(diào)用方式如下,其他幾種方式的對(duì)話(huà)框與此方法調(diào)用方式基本一致,以下就不再一一給出。
publicvoidonClickSimple(Viewv){
builder=newDialog().simpleDialog(this,"簡(jiǎn)單對(duì)話(huà)框","對(duì)話(huà)框內(nèi)容");
builder.setPositiveButton("確定",newOnClickListener(){
@Override
publicvoidonClick(DialogInterfacearg0,intarg1){
//確定
}
})
.setNegativeButton("取消",newOnClickListener(){
@Override
publicvoidonClick(DialogInterfacearg0,intarg1){
//取消
}
});
builder.create().show();
}
除此之外,AlertDialog.Builder還提供了setNeutralButton()方法來(lái)添加一個(gè)裝飾性的按鈕。因此Android的對(duì)話(huà)一共可以生成三個(gè)按鈕的對(duì)話(huà)框。
2、簡(jiǎn)單列表項(xiàng)對(duì)話(huà)框
#FormatImgID_1#
/**
*簡(jiǎn)單列表項(xiàng)對(duì)話(huà)框
*@authorcodingblock2015-8-11
*@paramcontext上下文
*@paramtitle對(duì)話(huà)框標(biāo)題
*@paramitems對(duì)話(huà)框列表項(xiàng)CharSequence類(lèi)型數(shù)組,也可根據(jù)需要改成其他類(lèi)型
*@return
*/
publicAlertDialog.BuildersimpleListDialog(finalContextcontext,Stringtitle,finalCharSequence[]items){
AlertDialog.Builderbuilder=newAlertDialog.Builder(context)
.setTitle(title)
.setIcon(R.drawable.ic_launcher)
.setItems(items,newOnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
Toast.makeText(context,"您選中了:"+items[which],Toast.LENGTH_SHORT).show();
}
});
returnbuilder;
}
上面的代碼通過(guò)調(diào)用setItems()方法為對(duì)話(huà)框設(shè)置了多個(gè)列表項(xiàng),其中setItems的第一個(gè)參數(shù)可以是Charsequence和int類(lèi)型。
3、單選列表項(xiàng)對(duì)話(huà)框
#FormatImgID_2#
/**
*單選列表項(xiàng)對(duì)話(huà)框
*@authorcodingblock2015-8-11
*@paramcontext上下文
*@paramtitle對(duì)話(huà)框標(biāo)題
*@paramitems對(duì)話(huà)框列表項(xiàng)CharSequence類(lèi)型數(shù)組
*@return
*/
publicAlertDialog.BuildersimpleChoiceDialog(finalContextcontext,Stringtitle,finalCharSequence[]items){
AlertDialog.Builderbuilder=newAlertDialog.Builder(context)
.setTitle(title)
.setIcon(R.drawable.ic_launcher)
//第二個(gè)參數(shù)為默認(rèn)選中項(xiàng),0:代表默認(rèn)選中第一項(xiàng)
.setSingleChoiceItems(items,0,newOnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
Toast.makeText(context,"您選中了:"+items[which],Toast.LENGTH_SHORT).show();
}
});
returnbuilder;
}
以上代碼通過(guò)調(diào)用setSingleChoiceItems()方法創(chuàng)建了帶單選列表的對(duì)話(huà)框。調(diào)用setSingleChoiceItems()方法時(shí)既可傳入數(shù)組作為參數(shù),也可傳入Cursor(相當(dāng)于數(shù)據(jù)庫(kù)查詢(xún)結(jié)果集)作為參數(shù),也可傳入ListAdapter作為參數(shù)。另外,如果傳入ListAdapter作為參數(shù),則由ListAdapter來(lái)提供多個(gè)列表項(xiàng)組件。
4、多選列表對(duì)話(huà)框
#FormatImgID_3#
/**
*多選列表項(xiàng)對(duì)話(huà)框
*@authorcodingblock2015-8-11
*@paramcontext上下文
*@paramtitle對(duì)話(huà)框標(biāo)題
*@paramitems對(duì)話(huà)框列表項(xiàng)CharSequence類(lèi)型數(shù)組
*@paramchecked對(duì)話(huà)框初始選定狀態(tài)boolean類(lèi)型數(shù)組
*@return
*/
publicAlertDialog.BuildermultiChoiceDialog(finalContextcontext,Stringtitle,finalCharSequence[]items,finalboolean[]checked){
AlertDialog.Builderbuilder=newAlertDialog.Builder(context)
.setTitle(title)
.setIcon(R.drawable.ic_launcher)
//第二個(gè)參數(shù)為默認(rèn)選中項(xiàng),是一個(gè)boolean型的數(shù)組
.setMultiChoiceItems(items,checked,null)
.setPositiveButton("完成",null)
.setNegativeButton("取消",null);
returnbuilder;
}
以上代碼通過(guò)調(diào)用setMultiChoiceItems()方法創(chuàng)建了一個(gè)多選列表的對(duì)話(huà)框。在調(diào)用setMultiChoiceItems()時(shí)既可傳入數(shù)組作為參數(shù),也可傳入Cursor作為參數(shù)。需要注意的時(shí)在調(diào)用setMultiChoiceItems()方法添加多選列表時(shí),還需要傳入一個(gè)boolean[]參數(shù),該參數(shù)有兩個(gè)作用:①設(shè)置初始化時(shí)選中哪些列表項(xiàng)。②該boolean[]類(lèi)型的參數(shù)還可用于動(dòng)態(tài)的獲取多選列表項(xiàng)的選中狀態(tài)。
5、自定義列表項(xiàng)對(duì)話(huà)框
#FormatImgID_4#
/**
*自定義列表項(xiàng)對(duì)話(huà)框
*@authorcodingblock2015-8-11
*@paramcontext上下文
*@paramtitle對(duì)話(huà)框標(biāo)題
*@paramitems對(duì)話(huà)框列表項(xiàng)String類(lèi)型數(shù)組,也可更具需要改成其他類(lèi)型
*@return
*/
publicAlertDialog.BuildercustomListDialog(finalContextcontext,Stringtitle,String[]items){
AlertDialog.Builderbuilder=newAlertDialog.Builder(context)
.setTitle(title)
.setIcon(R.drawable.ic_launcher)
.setAdapter(newArrayAdapter(context,R.layout.array_item,R.id.tv_item,items),null)
.setPositiveButton("完成",null)
.setNegativeButton("取消",null);
returnbuilder;
}
以上代碼通過(guò)setAdapter()設(shè)置了對(duì)話(huà)框的內(nèi)容,該方法需要傳入一個(gè)Adapter參數(shù),這樣的話(huà),就可以通過(guò)Adapter實(shí)現(xiàn)多個(gè)組件的繪制。其中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="10dp"
android:orientation="horizontal">
android:id="@+id/iv_img"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/ic_launcher"/>
android:id="@+id/tv_item"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:gravity="center"
android:text="列表項(xiàng)"/>
其實(shí),不僅setAdapter()方法可以接受Adapter作為參數(shù),setSingleChoice()方法也可以接受Adapter參數(shù),也就是說(shuō),使用setSingleChoice()方法也可以實(shí)現(xiàn)自定義列表項(xiàng)對(duì)話(huà)框。
6、自定義View的對(duì)話(huà)框
/**
*自定義View的對(duì)話(huà)框
*@authorcodingblock2015-8-11
*@paramcontext上下文
*@paramtitle對(duì)話(huà)框標(biāo)題
*/
publicAlertDialog.BuildercustomeViewDialog(finalContextcontext,Stringtitle){
LinearLayoutloginDialog=(LinearLayout)LayoutInflater.from(context).inflate(R.layout.login_dialog,null);
AlertDialog.Builderbuilder=newAlertDialog.Builder(context)
.setTitle(title)
.setIcon(R.drawable.ic_launcher)
.setView(loginDialog)
.setPositiveButton("完成",null)
.setNegativeButton("取消",null);
returnbuilder;
}
以上代碼通過(guò)setView()方法調(diào)用自定義的布局文件顯示界面。代碼中首先顯示裝載了login_dialog.xml文件,并返回該文件對(duì)應(yīng)的View,接下來(lái)程序調(diào)用了setView()方法來(lái)顯示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="10dp"
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="用戶(hù)名:"/>
android:id="@+id/et_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:hint="inputname"/>
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="inputpassword"/>
最后想向大家強(qiáng)調(diào)一點(diǎn),學(xué)編程基礎(chǔ)一定要打牢,所有的概念和知識(shí)點(diǎn)必須理解透徹,解更多請(qǐng)關(guān)注扣丁學(xué)堂Android培訓(xùn)官網(wǎng)、微信公眾號(hào)平臺(tái),扣丁學(xué)堂Android視頻教程從零基礎(chǔ)到精通免費(fèi)試聽(tīng)試學(xué),就業(yè)終端服務(wù)系統(tǒng)隨時(shí)監(jiān)控學(xué)員的學(xué)習(xí)情況和效果,順利畢業(yè)后根據(jù)學(xué)員自身風(fēng)格和學(xué)習(xí)效果推薦就業(yè)。如果你想要學(xué)習(xí)Android開(kāi)發(fā)工程師技術(shù)就不要再猶豫了,喜歡就付諸行動(dòng)吧。
在開(kāi)發(fā)過(guò)程中,與用戶(hù)交互式免不了會(huì)用到對(duì)話(huà)框以實(shí)現(xiàn)更好的用戶(hù)體驗(yàn),所以掌握幾種對(duì)話(huà)框的實(shí)現(xiàn)方法還是非常有必要的。在看具體實(shí)例之前先對(duì)AlertDialog做一個(gè)簡(jiǎn)單介紹。AlertDialog是功能最豐富、實(shí)踐應(yīng)用最廣的對(duì)話(huà)框,它可以生成各種內(nèi)容的對(duì)話(huà)框。但實(shí)際上AlertDialog生成的對(duì)話(huà)框總體可分為以下4個(gè)區(qū)域:圖標(biāo)區(qū)、標(biāo)題區(qū)、內(nèi)容區(qū)、按鈕區(qū)。
一般創(chuàng)建一個(gè)對(duì)話(huà)框需要經(jīng)過(guò)以下幾步:
1、創(chuàng)建AlertDialog.Builder對(duì)象。
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è)置對(duì)話(huà)框內(nèi)容。
5、調(diào)用AlertDialog.Builder的setPositiveButton()、setNegativeButton()或setNeutralButton()方法添加多個(gè)按鈕。
6、調(diào)用AlertDialog.Builder的create()方法創(chuàng)建AlertDialog對(duì)象,再調(diào)用AlertDialog對(duì)象的show()方法將該對(duì)話(huà)框顯示出來(lái)。
其中,第4步設(shè)置對(duì)話(huà)框的內(nèi)容,這里有6種方法來(lái)指定:
·setMessage():設(shè)置對(duì)話(huà)框內(nèi)容為簡(jiǎn)單文本內(nèi)容。
·setItems():設(shè)置對(duì)話(huà)框內(nèi)容為簡(jiǎn)單列表項(xiàng)。
·setSingleChoiceItems():設(shè)置對(duì)話(huà)框內(nèi)容為單選列表項(xiàng)。
·setMultiChoiceItems():設(shè)置對(duì)話(huà)框內(nèi)容為多選列表項(xiàng)。
·setAdapter():設(shè)置對(duì)話(huà)框內(nèi)容為自定義列表項(xiàng)。
·setView():設(shè)置對(duì)話(huà)框內(nèi)容為自定義View。
下面通過(guò)幾個(gè)實(shí)例來(lái)介紹一下AlertDialog的用法。
1、顯示提示消息的對(duì)話(huà)框。
#FormatImgID_0#
/**
*顯示提示消息的對(duì)話(huà)框
*@authorcodingblock2015-8-11
*@paramcontext上下文
*@paramtitle對(duì)話(huà)框標(biāo)題
*@parammessage對(duì)話(huà)框提示內(nèi)容
*@return
*/
publicAlertDialog.BuildersimpleDialog(finalContextcontext,Stringtitle,Stringmessage){
AlertDialog.Builderbuilder=newAlertDialog.Builder(context)
.setTitle(title)
.setIcon(R.drawable.ic_launcher)
.setMessage(message)
.setPositiveButton("完成",null)
.setNegativeButton("取消",null);
returnbuilder;
}
上面的代碼是將一個(gè)簡(jiǎn)單提示對(duì)話(huà)框封裝成了一個(gè)方法,調(diào)用時(shí)可以省去重復(fù)代碼,直接傳遞title,message等參數(shù)即可,其中該對(duì)話(huà)框用設(shè)置了icon,title等屬性,還調(diào)用了setPositiveButton()和setNegativeButton()方法添加按鈕,因?yàn)樵摲椒?simpleDialog())在這里僅提供調(diào)用,所以沒(méi)有實(shí)現(xiàn)按鈕的具體功能,可在實(shí)際調(diào)用中重寫(xiě)這兩個(gè)方法從而實(shí)現(xiàn)具體功能。
調(diào)用方式如下,其他幾種方式的對(duì)話(huà)框與此方法調(diào)用方式基本一致,以下就不再一一給出。
publicvoidonClickSimple(Viewv){
builder=newDialog().simpleDialog(this,"簡(jiǎn)單對(duì)話(huà)框","對(duì)話(huà)框內(nèi)容");
builder.setPositiveButton("確定",newOnClickListener(){
@Override
publicvoidonClick(DialogInterfacearg0,intarg1){
//確定
}
})
.setNegativeButton("取消",newOnClickListener(){
@Override
publicvoidonClick(DialogInterfacearg0,intarg1){
//取消
}
});
builder.create().show();
}
除此之外,AlertDialog.Builder還提供了setNeutralButton()方法來(lái)添加一個(gè)裝飾性的按鈕。因此Android的對(duì)話(huà)一共可以生成三個(gè)按鈕的對(duì)話(huà)框。
2、簡(jiǎn)單列表項(xiàng)對(duì)話(huà)框
#FormatImgID_1#
/**
*簡(jiǎn)單列表項(xiàng)對(duì)話(huà)框
*@authorcodingblock2015-8-11
*@paramcontext上下文
*@paramtitle對(duì)話(huà)框標(biāo)題
*@paramitems對(duì)話(huà)框列表項(xiàng)CharSequence類(lèi)型數(shù)組,也可根據(jù)需要改成其他類(lèi)型
*@return
*/
publicAlertDialog.BuildersimpleListDialog(finalContextcontext,Stringtitle,finalCharSequence[]items){
AlertDialog.Builderbuilder=newAlertDialog.Builder(context)
.setTitle(title)
.setIcon(R.drawable.ic_launcher)
.setItems(items,newOnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
Toast.makeText(context,"您選中了:"+items[which],Toast.LENGTH_SHORT).show();
}
});
returnbuilder;
}
上面的代碼通過(guò)調(diào)用setItems()方法為對(duì)話(huà)框設(shè)置了多個(gè)列表項(xiàng),其中setItems的第一個(gè)參數(shù)可以是Charsequence和int類(lèi)型。
3、單選列表項(xiàng)對(duì)話(huà)框
#FormatImgID_2#
/**
*單選列表項(xiàng)對(duì)話(huà)框
*@authorcodingblock2015-8-11
*@paramcontext上下文
*@paramtitle對(duì)話(huà)框標(biāo)題
*@paramitems對(duì)話(huà)框列表項(xiàng)CharSequence類(lèi)型數(shù)組
*@return
*/
publicAlertDialog.BuildersimpleChoiceDialog(finalContextcontext,Stringtitle,finalCharSequence[]items){
AlertDialog.Builderbuilder=newAlertDialog.Builder(context)
.setTitle(title)
.setIcon(R.drawable.ic_launcher)
//第二個(gè)參數(shù)為默認(rèn)選中項(xiàng),0:代表默認(rèn)選中第一項(xiàng)
.setSingleChoiceItems(items,0,newOnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
Toast.makeText(context,"您選中了:"+items[which],Toast.LENGTH_SHORT).show();
}
});
returnbuilder;
}
以上代碼通過(guò)調(diào)用setSingleChoiceItems()方法創(chuàng)建了帶單選列表的對(duì)話(huà)框。調(diào)用setSingleChoiceItems()方法時(shí)既可傳入數(shù)組作為參數(shù),也可傳入Cursor(相當(dāng)于數(shù)據(jù)庫(kù)查詢(xún)結(jié)果集)作為參數(shù),也可傳入ListAdapter作為參數(shù)。另外,如果傳入ListAdapter作為參數(shù),則由ListAdapter來(lái)提供多個(gè)列表項(xiàng)組件。
4、多選列表對(duì)話(huà)框
#FormatImgID_3#
/**
*多選列表項(xiàng)對(duì)話(huà)框
*@authorcodingblock2015-8-11
*@paramcontext上下文
*@paramtitle對(duì)話(huà)框標(biāo)題
*@paramitems對(duì)話(huà)框列表項(xiàng)CharSequence類(lèi)型數(shù)組
*@paramchecked對(duì)話(huà)框初始選定狀態(tài)boolean類(lèi)型數(shù)組
*@return
*/
publicAlertDialog.BuildermultiChoiceDialog(finalContextcontext,Stringtitle,finalCharSequence[]items,finalboolean[]checked){
AlertDialog.Builderbuilder=newAlertDialog.Builder(context)
.setTitle(title)
.setIcon(R.drawable.ic_launcher)
//第二個(gè)參數(shù)為默認(rèn)選中項(xiàng),是一個(gè)boolean型的數(shù)組
.setMultiChoiceItems(items,checked,null)
.setPositiveButton("完成",null)
.setNegativeButton("取消",null);
returnbuilder;
}
以上代碼通過(guò)調(diào)用setMultiChoiceItems()方法創(chuàng)建了一個(gè)多選列表的對(duì)話(huà)框。在調(diào)用setMultiChoiceItems()時(shí)既可傳入數(shù)組作為參數(shù),也可傳入Cursor作為參數(shù)。需要注意的時(shí)在調(diào)用setMultiChoiceItems()方法添加多選列表時(shí),還需要傳入一個(gè)boolean[]參數(shù),該參數(shù)有兩個(gè)作用:①設(shè)置初始化時(shí)選中哪些列表項(xiàng)。②該boolean[]類(lèi)型的參數(shù)還可用于動(dòng)態(tài)的獲取多選列表項(xiàng)的選中狀態(tài)。
5、自定義列表項(xiàng)對(duì)話(huà)框
#FormatImgID_4#
/**
*自定義列表項(xiàng)對(duì)話(huà)框
*@authorcodingblock2015-8-11
*@paramcontext上下文
*@paramtitle對(duì)話(huà)框標(biāo)題
*@paramitems對(duì)話(huà)框列表項(xiàng)String類(lèi)型數(shù)組,也可更具需要改成其他類(lèi)型
*@return
*/
publicAlertDialog.BuildercustomListDialog(finalContextcontext,Stringtitle,String[]items){
AlertDialog.Builderbuilder=newAlertDialog.Builder(context)
.setTitle(title)
.setIcon(R.drawable.ic_launcher)
.setAdapter(newArrayAdapter(context,R.layout.array_item,R.id.tv_item,items),null)
.setPositiveButton("完成",null)
.setNegativeButton("取消",null);
returnbuilder;
}
以上代碼通過(guò)setAdapter()設(shè)置了對(duì)話(huà)框的內(nèi)容,該方法需要傳入一個(gè)Adapter參數(shù),這樣的話(huà),就可以通過(guò)Adapter實(shí)現(xiàn)多個(gè)組件的繪制。其中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="10dp"
android:orientation="horizontal">
android:id="@+id/iv_img"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/ic_launcher"/>
android:id="@+id/tv_item"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:gravity="center"
android:text="列表項(xiàng)"/>
其實(shí),不僅setAdapter()方法可以接受Adapter作為參數(shù),setSingleChoice()方法也可以接受Adapter參數(shù),也就是說(shuō),使用setSingleChoice()方法也可以實(shí)現(xiàn)自定義列表項(xiàng)對(duì)話(huà)框。
6、自定義View的對(duì)話(huà)框
/**
*自定義View的對(duì)話(huà)框
*@authorcodingblock2015-8-11
*@paramcontext上下文
*@paramtitle對(duì)話(huà)框標(biāo)題
*/
publicAlertDialog.BuildercustomeViewDialog(finalContextcontext,Stringtitle){
LinearLayoutloginDialog=(LinearLayout)LayoutInflater.from(context).inflate(R.layout.login_dialog,null);
AlertDialog.Builderbuilder=newAlertDialog.Builder(context)
.setTitle(title)
.setIcon(R.drawable.ic_launcher)
.setView(loginDialog)
.setPositiveButton("完成",null)
.setNegativeButton("取消",null);
returnbuilder;
}
以上代碼通過(guò)setView()方法調(diào)用自定義的布局文件顯示界面。代碼中首先顯示裝載了login_dialog.xml文件,并返回該文件對(duì)應(yīng)的View,接下來(lái)程序調(diào)用了setView()方法來(lái)顯示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="10dp"
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="用戶(hù)名:"/>
android:id="@+id/et_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:hint="inputname"/>
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="inputpassword"/>
最后想向大家強(qiáng)調(diào)一點(diǎn),學(xué)編程基礎(chǔ)一定要打牢,所有的概念和知識(shí)點(diǎn)必須理解透徹,解更多請(qǐng)關(guān)注扣丁學(xué)堂Android培訓(xùn)官網(wǎng)、微信公眾號(hào)平臺(tái),扣丁學(xué)堂Android視頻教程從零基礎(chǔ)到精通免費(fèi)試聽(tīng)試學(xué),就業(yè)終端服務(wù)系統(tǒng)隨時(shí)監(jiān)控學(xué)員的學(xué)習(xí)情況和效果,順利畢業(yè)后根據(jù)學(xué)員自身風(fēng)格和學(xué)習(xí)效果推薦就業(yè)。如果你想要學(xué)習(xí)Android開(kāi)發(fā)工程師技術(shù)就不要再猶豫了,喜歡就付諸行動(dòng)吧。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“Android開(kāi)發(fā)技術(shù)”的相關(guān)資訊>>