Android中AlertDialog控件的基本使用和定制方法
2014-03-04 15:51
471 查看
Android中的许多组建都是可以由开发者自己定制的,通过自己定制,我们可以自己搭配或设计出一些漂亮的外观。当然AlertDialog也不例外。
AlertDialog显示的时候有三个部分组成,分别是:
1. 标题 (通过setTitle()方法来设置)
2. 内容 (通过setMessage()方法来设置)
3. 按钮 (通过setButton()、setPositiveButton()、setNegativeButton()等方法来设置)
三个部分在弹出的对话框中的位置如图(Android版本不同可能显示在不同):
![](http://developer.android.com/images/ui/dialogs_regions.png)
1->标题(title) 2->内容(message) 3->按钮(buttons)
其中这三个部分里只有内容部分是可以定制的,也就是只有中间的那一片可以由我们自己设计并定制,当然,像按钮之类的东东可以自己在定制界面里加上而不用setButton()之类原有的。
那么我们现在先看看如何使用AlertDialog。AlertDialog要通过AlertDialog.Builder这个类来生成,如果只是像简单的弹出对话框的话下面的这段代码就可以:
如果设置Android支持的最低API版本>=11,那么可以使用DialogFragment来组织AlertDialog,下面的代码是官方代码:
可以这样来使用这个对话框:
FireMissilesDialogFragment dlg = new FireMissilesDialogFragment();
dlg.show(getFragmentManager(), "随意");
//dlg.dismiss(); 用这个来消失
如果是直接使用AlertDialog的话,有show()方法可以用来弹出对话框,但是如果使用DialogFragment的话show()方法需要含有参数,第一个参数是一个FragmentManager类型的对象,可以通过 getSupportFragmentManager() 或 getFragmentManager() 来获取。第二个参数是一个字符串,可以在之后的一些地方用来获取这个Fragment。
如果想要关闭对话框的话要通过使用dismiss()方法,还有另一个cancel()方法。他们的区别就在于:调用dismiss()方法的时候不会调用onCancel()生命周期函数,但是如果调用cancel()会调用onDismiss()方法和onCancel()方法。
接下来就是如何定制了,其实就是通过AlertDialog对象或AlertDialog.Builder对象的setView()方法来设置自己的内容布局,可以将定制的东西写成xml(放在/res/layout中),下面是来自官方的实例代码:
用来定制外观的xml文件,文件名为dialog_signin.xml:
然后只需在代码中通过填充器填充传入xml文件的id即可:
AlertDialog显示的时候有三个部分组成,分别是:
1. 标题 (通过setTitle()方法来设置)
2. 内容 (通过setMessage()方法来设置)
3. 按钮 (通过setButton()、setPositiveButton()、setNegativeButton()等方法来设置)
三个部分在弹出的对话框中的位置如图(Android版本不同可能显示在不同):
![](http://developer.android.com/images/ui/dialogs_regions.png)
1->标题(title) 2->内容(message) 3->按钮(buttons)
其中这三个部分里只有内容部分是可以定制的,也就是只有中间的那一片可以由我们自己设计并定制,当然,像按钮之类的东东可以自己在定制界面里加上而不用setButton()之类原有的。
那么我们现在先看看如何使用AlertDialog。AlertDialog要通过AlertDialog.Builder这个类来生成,如果只是像简单的弹出对话框的话下面的这段代码就可以:
AlertDialog dialog = new AlertDialog.Builder(this).create(); dialog.setTitle("对话框的标题"); dialog.setMessage("对话框的内容"); dialog.setButton(dialog.BUTTON_POSITIVE, "对话框的按钮", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 这里是按钮的功能函数 } }); dialog.show();
如果设置Android支持的最低API版本>=11,那么可以使用DialogFragment来组织AlertDialog,下面的代码是官方代码:
public class FireMissilesDialogFragment extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the Builder class for convenient dialog construction AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setMessage(R.string.dialog_fire_missiles) .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // FIRE ZE MISSILES! } }) .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // User cancelled the dialog } }); // Create the AlertDialog object and return it return builder.create(); } }
可以这样来使用这个对话框:
FireMissilesDialogFragment dlg = new FireMissilesDialogFragment();
dlg.show(getFragmentManager(), "随意");
//dlg.dismiss(); 用这个来消失
如果是直接使用AlertDialog的话,有show()方法可以用来弹出对话框,但是如果使用DialogFragment的话show()方法需要含有参数,第一个参数是一个FragmentManager类型的对象,可以通过 getSupportFragmentManager() 或 getFragmentManager() 来获取。第二个参数是一个字符串,可以在之后的一些地方用来获取这个Fragment。
如果想要关闭对话框的话要通过使用dismiss()方法,还有另一个cancel()方法。他们的区别就在于:调用dismiss()方法的时候不会调用onCancel()生命周期函数,但是如果调用cancel()会调用onDismiss()方法和onCancel()方法。
接下来就是如何定制了,其实就是通过AlertDialog对象或AlertDialog.Builder对象的setView()方法来设置自己的内容布局,可以将定制的东西写成xml(放在/res/layout中),下面是来自官方的实例代码:
用来定制外观的xml文件,文件名为dialog_signin.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:src="@drawable/header_logo" android:layout_width="match_parent" android:layout_height="64dp" android:scaleType="center" android:background="#FFFFBB33" android:contentDescription="@string/app_name" /> <EditText android:id="@+id/username" android:inputType="textEmailAddress" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:layout_marginLeft="4dp" android:layout_marginRight="4dp" android:layout_marginBottom="4dp" android:hint="@string/username" /> <EditText android:id="@+id/password" android:inputType="textPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:layout_marginLeft="4dp" android:layout_marginRight="4dp" android:layout_marginBottom="16dp" android:fontFamily="sans-serif" android:hint="@string/password"/> </LinearLayout>
然后只需在代码中通过填充器填充传入xml文件的id即可:
@Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); LayoutInflater inflater = getActivity().getLayoutInflater(); builder.setView(inflater.inflate(R.layout.dialog_signin, null)) return builder.create(); }
相关文章推荐
- [Android] ListView (普通列表控件) 的基本使用方法
- Android搜索控件的基本使用方法
- [Android] ListView (普通列表控件) 的基本使用方法
- Android常规控件的基本使用方法
- Android AlertDialog的基本使用方法
- 【Android】32、常见控件的使用方法——AlertDialog
- Android搜索控件的基本使用方法
- Android编程 - WebView控件基本使用方法
- 【PullToRefresh 系列一基本使用方法】 Android上拉加载下拉刷新控件详解
- Android中常用基本控件的使用方法和步骤(.txt)
- Android常用控件-DatePicker以及对话框的两种使用方法
- selenium 基本方法使用二_javascript的应用_对input框执行输入(日历控件)
- DevExpress MVC 控件使用 01 --- 基本使用方法
- Android中第三方控件PhotoView的基本使用
- Android省市区三级联动控件使用方法实例讲解
- android基本类型的自定义控件使用
- 使用RFT的getProperty和invoke方法测试定制的Java控件(2)
- Android基本UI控件的介绍及使用
- CListCtrl控件的基本使用方法
- 实例讲解Android App使用自带的SQLite数据库的基本方法