首页 > 其他 > 详细

AlertDialog.Builder弹出自定义Layout窗口

时间:2014-03-16 23:35:46      阅读:746      评论:0      收藏:0      [点我收藏+]

一.使用AlertDialog创建弹出窗口步骤

前面说过,使用AlertDialog.Builder弹出窗口,一般,是下面几个步骤.

(一)创建AltrtDialog.Builder对象,该对象是AlterDialog的创建器

Public Constructors
AlertDialog.Builder(Context context)
Constructor using a context for this builder and the AlertDialog it creates.
AlertDialog.Builder(Context context, int theme)
Constructor using a context and theme for this builder and the AlertDialog it creates.

(二)调用 AltrtDialog.Builder的方法为对话框设定图标,标题,内容等.

AlertDialog.Builder setIcon(Drawable icon)
Set the Drawable to be used in the title.
AlertDialog.Builder setIcon(int iconId)
Set the resource id of the Drawable to be used in the title.
AlertDialog.Builder setMessage(CharSequence message)
Set the message to display.
AlertDialog.Builder setMessage(int messageId)
Set the message to display using the given resource id.
AlertDialog.Builder setOnKeyListener(DialogInterface.OnKeyListener onKeyListener)
Sets the callback that will be called if a key is dispatched to the dialog.
AlertDialog.Builder setPositiveButton(int textId, DialogInterface.OnClickListener listener)
Set a listener to be invoked when the positive button of the dialog is pressed.
AlertDialog.Builder setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener)
Set a listener to be invoked when the positive button of the dialog is pressed.
AlertDialog.Builder setTitle(CharSequence title)
Set the title displayed in the Dialog.
AlertDialog.Builder setTitle(int titleId)
Set the title using the given resource id.
AlertDialog.Builder setView(View view)
Set a custom view to be the contents of the Dialog.

(三)调用 AltrtDialog.Builder的create()方法创建对话框

AlertDialog create()
Creates a AlertDialog with the arguments supplied to this builder.

(四)调用 AltrtDialog.Builder的show()方法显示对话框

AlertDialog 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来作为窗口的显示方式了.

.bubuko.com,布布扣

(一) 这里自定义的布局文件为 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>

(二)下面,我们通过代码,加载这个自定义View

    首先,获取需要加载的布局文件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

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!