`

android:LayoutInflater详解

阅读更多
 在实际开发种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加载布局详解及实例代码

    Android LayoutInflater 是一个核心组件,它负责将XML布局文件转换为屏幕上的可交互视图对象。在Android应用开发中,我们通常使用LayoutInflater来动态地加载和插入布局,这在创建自定义视图、处理动态数据或者在...

    android中LayoutInflater的使用.pdf

    `getSystemService()`方法详解: 这是一个Android `Context`中的方法,用于获取系统服务。通过传递特定的字符串常量(如`LAYOUT_INFLATER_SERVICE`),我们可以获取到对应的服务对象。这个方法对于访问Android系统的...

    Android toolbar 使用详解

    View customView = LayoutInflater.from(this).inflate(R.layout.custom_toolbar_view, null); toolbar.setCustomView(customView); ``` 在`custom_toolbar_view.xml`中,你可以添加ImageView、TextView等元素,以...

    Android Tabhost使用详解(详尽)

    ### Android Tabhost 使用详解 #### 一、Tabhost 概述 在Android开发过程中,`Tabhost` 是一个非常实用的组件,它可以帮助开发者轻松地为应用创建标签式导航界面。这种方式不仅美观而且能有效提高用户体验。本文将...

    android dialog输入框获取数据

    ### Android Dialog 输入框获取数据详解 #### 一、前言 在Android开发中,Dialog(对话框)是一种非常常见的UI组件,它可以帮助开发者快速构建出弹出式对话窗口,用于与用户进行简单交互,比如提示信息、确认操作...

    Android开发之自定义控件用法详解

    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布局优化与Zipalign详解 #### 一、Android布局优化概述 在Android开发中,良好的用户界面设计至关重要。为了实现高效且美观的界面布局,开发者需要了解并掌握各种布局方式及其优缺点。本篇文章将重点...

    TableLayout背景

    2. **属性详解**: - `android:stretchColumns`:指定列是否可以拉伸以填充额外的空间。如果设置为列索引,该列将拉伸。 - `android:shrinkColumns`:指定列是否可以收缩。当表格内容超出其边界时,可以收缩列宽。...

    Android 动态加载布局

    ### 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...

    android ListView初级到高级详解

    convertView = LayoutInflater.from(context).inflate(R.layout.item_layout, parent, false); viewHolder.image = convertView.findViewById(R.id.item_image); viewHolder.text = convertView.findViewById(R....

    Android布局加载之LayoutInflater示例详解

    前言 Activity 在界面创建时需要将 XML 布局文件中的内容加载进来,正如我们在 ListView 或者 RecyclerView 中需要将 Item 的布局加载进来一样,都是使用 ...由于 Android 系统源码中关于 Content 部分采用的是装饰模

    Android开发中LayoutInflater用法详解

    在Android开发中,`LayoutInflater` 是一个至关重要的工具,它主要用于将XML布局文件转换为视图对象(View)并添加到视图层次结构中。`LayoutInflater` 的主要作用在于动态加载或实例化用户界面,这对于创建可重用的...

    listview的使用实例

    ### ListView的使用实例详解 #### 一、简介 在Android应用开发中,`ListView`是一种常用的控件,用于展示一个可以滚动的项目列表。通过本篇文章,我们将详细讲解`ListView`的基本用法,并通过示例代码来加深理解。...

Global site tag (gtag.js) - Google Analytics