在实际开发种LayoutInflater这个类还是非常有用的,它的作用类似于findViewById(),不同点是LayoutInflater是用来找layout下xml布局文件,并且实例化!而findViewById()是找具体xml下的具体widget控件(如:Button,TextView等)。
主布局main.xml里有一个TextView和一个Button,当点击Button,出现Dialog,而这个Dialog的布局方式是我们在layout目录下定义的custom_dialog.xml文件(里面左右分布,左边ImageView,右边TextView)。
XML代码:
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"/>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ShowCustomDialog"/>
</LinearLayout>
定义对话框的布局方式,我们在layout目录下,新建一个名为custom_dialog.xml文件具体代码如下:
XML代码:
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp">
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="10dp"/>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textColor="#FFF"/>
</LinearLayout>
主程序LayouInflaterDemo.java代码如下:
packageEOE.android.Demo;
importandroid.app.Activity;
importandroid.app.AlertDialog;
importandroid.content.Context;
importandroid.os.Bundle;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.ImageView;
importandroid.widget.TextView;
publicclassLayoutInflaterDemoextendsActivityimplementsOnClickListener{
privateButtonbutton;
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button=(Button)findViewById(R.id.button);
button.setOnClickListener(this);
}
@Override
publicvoidonClick(Viewv){
showCustomDialog();
}
publicvoidshowCustomDialog(){
AlertDialog.Builderbuilder;
AlertDialogalertDialog;
ContextmContext=LayoutInflaterDemo.this;
//下面俩种方法都可以
////LayoutInflaterinflater=getLayoutInflater();
LayoutInflaterinflater=(LayoutInflater)mContext.getSystemServic(LAYOUT_INFLATER_SERVICE);
Viewlayout=inflater.inflate(R.layout.custom_dialog,null);
TextViewtext=(TextView)layout.findViewById(R.id.text);
text.setText("Hello,WelcometoMrWei'sblog!");
ImageViewimage=(ImageView)layout.findViewById(R.id.image);
image.setImageResource(R.drawable.icon);
builder=newAlertDialog.Builder(mContext);
builder.setView(layout);
alertDialog=builder.create();
alertDialog.show();
}
}
分享到:
相关推荐
Android LayoutInflater 是一个核心组件,它负责将XML布局文件转换为屏幕上的可交互视图对象。在Android应用开发中,我们通常使用LayoutInflater来动态地加载和插入布局,这在创建自定义视图、处理动态数据或者在...
`getSystemService()`方法详解: 这是一个Android `Context`中的方法,用于获取系统服务。通过传递特定的字符串常量(如`LAYOUT_INFLATER_SERVICE`),我们可以获取到对应的服务对象。这个方法对于访问Android系统的...
View customView = LayoutInflater.from(this).inflate(R.layout.custom_toolbar_view, null); toolbar.setCustomView(customView); ``` 在`custom_toolbar_view.xml`中,你可以添加ImageView、TextView等元素,以...
### Android Tabhost 使用详解 #### 一、Tabhost 概述 在Android开发过程中,`Tabhost` 是一个非常实用的组件,它可以帮助开发者轻松地为应用创建标签式导航界面。这种方式不仅美观而且能有效提高用户体验。本文将...
### Android Dialog 输入框获取数据详解 #### 一、前言 在Android开发中,Dialog(对话框)是一种非常常见的UI组件,它可以帮助开发者快速构建出弹出式对话窗口,用于与用户进行简单交互,比如提示信息、确认操作...
import android.view.LayoutInflater; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; public class CustomButton extends LinearLayout { private ...
### Android布局优化与Zipalign详解 #### 一、Android布局优化概述 在Android开发中,良好的用户界面设计至关重要。为了实现高效且美观的界面布局,开发者需要了解并掌握各种布局方式及其优缺点。本篇文章将重点...
2. **属性详解**: - `android:stretchColumns`:指定列是否可以拉伸以填充额外的空间。如果设置为列索引,该列将拉伸。 - `android:shrinkColumns`:指定列是否可以收缩。当表格内容超出其边界时,可以收缩列宽。...
### Android 动态加载布局详解 #### 一、概述 Android 开发中,动态加载布局是一种常见的技术手段,主要用于在程序运行过程中根据用户操作或应用需求动态改变UI界面。通过这种方式,开发者可以更加灵活地控制应用...
View view = LayoutInflater.from(getContext()).inflate(R.layout.custom_dialog_layout, null); view.findViewById(R.id.cancel_button).setOnClickListener(onClickListener); view.findViewById(R.id.confirm...
convertView = LayoutInflater.from(context).inflate(R.layout.item_layout, parent, false); viewHolder.image = convertView.findViewById(R.id.item_image); viewHolder.text = convertView.findViewById(R....
前言 Activity 在界面创建时需要将 XML 布局文件中的内容加载进来,正如我们在 ListView 或者 RecyclerView 中需要将 Item 的布局加载进来一样,都是使用 ...由于 Android 系统源码中关于 Content 部分采用的是装饰模
在Android开发中,`LayoutInflater` 是一个至关重要的工具,它主要用于将XML布局文件转换为视图对象(View)并添加到视图层次结构中。`LayoutInflater` 的主要作用在于动态加载或实例化用户界面,这对于创建可重用的...
### ListView的使用实例详解 #### 一、简介 在Android应用开发中,`ListView`是一种常用的控件,用于展示一个可以滚动的项目列表。通过本篇文章,我们将详细讲解`ListView`的基本用法,并通过示例代码来加深理解。...