AlertDialog.Builder弹出自定义Layout窗口

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

.

(一) 这里自定义的布局文件为 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) {//加上你要实现的代码
    }
  });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值