一.使用AlertDialog创建弹出窗口步骤
前面说过,使用AlertDialog.Builder弹出窗口,一般,是下面几个步骤.
(一)创建AltrtDialog.Builder对象,该对象是AlterDialog的创建器
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
Constructor using a context for this builder and the
AlertDialog it
creates. |
||||||||||
|
Constructor using a context and theme for this builder and the
AlertDialog it
creates. |
(二)调用 AltrtDialog.Builder的方法为对话框设定图标,标题,内容等.
|
Set the
Drawable to
be used in the title. |
|
Set the resource id of the
Drawable to
be used in the title. |
|
Set the message to display.
|
|
Set the message to display using the given resource id.
|
|
Sets the callback that will be called if a key is dispatched to the dialog.
|
|
Set a listener to be invoked when the positive button of the dialog is pressed.
|
|
Set a listener to be invoked when the positive button of the dialog is pressed.
|
|
Set the title displayed in the
Dialog . |
|
Set the title using the given resource id.
|
|
Set a custom view to be the contents of the Dialog.
|
(三)调用 AltrtDialog.Builder的create()方法创建对话框
|
Creates a
AlertDialog with
the arguments supplied to this builder. |
(四)调用 AltrtDialog.Builder的show()方法显示对话框
|
Creates a
AlertDialog with
the arguments supplied to this builder and show() ‘s
the dialog |
二.使用AlertDialog.Builder加载自定义View
按照上面的步骤,使用的是默认的AlertDialog.Builder的窗口显示方式,如果想要显示内容丰富的弹出窗口,如里面有一些输入框之类的,如下面的图片所示,那么,就需要我们使用AlertDialog.Builder.setView(View v)方法加载自定义的View来作为窗口的显示方式了.
.
(一) 这里自定义的布局文件为 order.xml.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffffff" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ff000000" android:layout_marginTop="41dip" android:layout_marginBottom="41dip" android:layout_marginLeft="41dip" android:layout_marginRight="41dip" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="请输入欲预约图书的书号: " android:textSize="25dip" > </TextView> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="41dip" android:layout_marginRight="41dip" android:layout_marginBottom="24dip" android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="预约书号: " android:textColor="#000000" android:textSize="25dip" > </TextView> <EditText android:id="@+id/orderEditSH" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="10009" android:textColor="#000000" android:textSize="25dip" > </EditText> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginLeft="41dip" android:layout_marginRight="41dip" android:layout_marginBottom="41dip" android:orientation="horizontal" > <Button android:id="@+id/startOrder_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="开始预约图书 " android:textSize="25dip" > </Button> <Button android:id="@+id/managerOrder_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="管理个人预约 " android:textSize="25dip" > </Button> </LinearLayout> </LinearLayout>
首先,获取需要加载的布局文件order.xml, 这里采用的是LayoutInflater,而不是我们平时使用的 findViewById( ).LayoutInflater的作用类似于 findViewById(),不同点是LayoutInflater是用来找layout文件夹下的xml布局文件,并且实例化!而 findViewById()是找具体某一个xml下的具体 widget控件(如:Button,TextView等)。使用LayoutInflater来获取布局文件有三种方式:
第一种方式:
LayoutInflater inflater = LayoutInflater.from(this); View layout = inflater.inflate(R.layout.order, null);第二种方式:
LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.order, null);第三种方式:
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.main, null);
以前我们在Activity里面使用某个控件时,通常是直接使用findViewById()方法来获取这个控件,而如果我们要使用AlertDialog.Builder显示的自定义Layout里面的控件,需要注意要显示地用View对象调用findViewById()这个方法.如上面创建的是View layout对象.那么,需要使用如下访求获取EditText orderEditSH.
EditText orderBookNum=(EditText)layout.findViewById(R.id.orderEditSH);
使用AlertDialog.Builder弹出上面自定义窗口的完整代码如下:
LayoutInflater inflater = LayoutInflater.from(this);
View layout=inflater.inflate(R.layout.order,null);
AlertDialog.Builder builder =new AlertDialog.Builder(Order.this);
builder.setView(view);
builder.setCancelable(false);
builder.create().show();
Button startOrder_btn=(Button) layout.findViewById(R.id.startOrder_btn);
Button managerOrder_btn=(Button) layout.findViewById(R.id.managerOrder_btn);
EditText orderBookNum=(EditText)layout.findViewById(R.id.orderEditSH);
startOrder_btn.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//加上你要实现的代码
}
});
managerOrder_btn.setOnClickListener(new OnClickListener(){
public void onClick(View v) {//加上你要实现的代码
}
});
AlertDialog.Builder弹出自定义Layout窗口,布布扣,bubuko.com
AlertDialog.Builder弹出自定义Layout窗口
原文:http://blog.csdn.net/luzhenrong45/article/details/21340435