基于Android LayoutInflater的使用介绍
在android中,layoutinflater有点类似于activity的findviewbyid(id),不同的是layoutinflater是用来找layout下的xml布局文件,并且实例化!而findviewbyid()是找具体xml下的具体 widget控件(如:button,textview等)。
下面通过一个例子进行详细说明:
1、在res/layout文件夹下,添加一个xml文件dialog.xml
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<imageview
android:id="@+id/diaimage"
android:layout_width="wrap_content"
android:layout_height="fill_parent" >
</imageview>
<textview
android:id="@+id/diatv"
android:layout_width="wrap_content"
android:layout_height="fill_parent" />
</linearlayout>
2、在main.xml文件中添加一个按钮,此按钮用于实现点击显示一个dialog
<button
android:id="@+id/btnshowdialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="show dialog" />
3、在mainactivity的oncreate方法中添加如下代码,实现具体功能操作
button showdialog = (button) findviewbyid(r.id.btnshowdialog);
showdialog.setonclicklistener(new onclicklistener() {
@override
public void onclick(view v) {
alertdialog.builder builder = new alertdialog.builder(mainactivity.this);
alertdialog dialog;
layoutinflater inflater = getlayoutinflater();
view layout = inflater.inflate(r.layout.dialog, null);
textview diatv = (textview) layout.findviewbyid(r.id.diatv);
diatv.settext("welcome to layoutinflater study");
imageview image = (imageview) layout.findviewbyid(r.id.diaimage);
image.setimageresource(r.drawable.ic_launcher);
builder.setview(layout);// <--important,设置对话框内容的view
dialog = builder.create();
dialog.show();
}
});
运行程序,点击按钮,将实现如下效果!