继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

AlertDialog.Builder弹出自定义Layout窗口

天涯尽头无女友
关注TA
已关注
手记 85
粉丝 9
获赞 42

一.使用 

一.使用 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.BuildersetIcon Drawable  icon)

Set the  Drawable  to be used in the title.

AlertDialog.BuildersetIcon (int iconId)

Set the resource id of the  Drawable  to be used in the title.

AlertDialog.BuildersetMessage CharSequence  message)

Set the message to display.

AlertDialog.BuildersetMessage (int messageId)

Set the message to display using the given resource id.

AlertDialog.BuildersetOnKeyListener DialogInterface.OnKeyListener  onKeyListener)

Sets the callback that will be called if a key is dispatched to the dialog.

AlertDialog.BuildersetPositiveButton (int textId,  DialogInterface.OnClickListener  listener)

Set a listener to be invoked when the positive button of the dialog is pressed.

AlertDialog.BuildersetPositiveButton CharSequence  text,  DialogInterface.OnClickListener  listener)

Set a listener to be invoked when the positive button of the dialog is pressed.

AlertDialog.BuildersetTitle CharSequence  title)

Set the title displayed in the  Dialog .

AlertDialog.BuildersetTitle (int titleId)

Set the title using the given resource id.

AlertDialog.BuildersetView View  view)

Set a custom view to be the contents of the Dialog.

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

AlertDialogcreate ()

Creates a  AlertDialog  with the arguments supplied to this builder.

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

AlertDialogshow ()

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 view=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) {//加上你要实现的代码    }  });

原文链接:http://www.apkbus.com/blog-830047-61358.html

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP