`

Android之Inflate()方法用途

 
阅读更多
原文:

Inflate()作用就是将xml定义的一个布局找出来,但仅仅是找出来而且隐藏的,没有找到的同时并显示功能。最近做的一个项目就是这一点让我迷茫了好几天。

android上还有一个与Inflate()类似功能的方法叫findViewById(),二者有时均可使用,但也有区别

区别在于:

如果你的Activity里用到别的layout,比如对话框layout,你还要设置这个layout上的其他组件的内容,你就必须用inflate()方法先将对话框的layout找出来,然后再用findViewById()找到它上面的其它组件。例如:
View view1=View.inflate(this,R.layout.dialog_layout,null);
  TextViewdialogTV=(TextView)view1.findViewById(R.id.dialog_tv);
  dialogTV.setText("abcd");

注:R.id.dialog_tv是在对话框layout上的组件,而这时若直接用this.findViewById(R.id.dialog_tv)肯定会报错。
View viewStub = ((ViewStub) findViewById(R.id.stubView)).inflate();


Inflate()或可理解为“隐性膨胀”,隐性摆放在view里,inflate()前只是获得控件,但没有大小没有在View里占据空间,inflate()后有一定大小,只是出于隐藏状态

-----------------------
通俗的说,inflate就相当于将一个xml中定义的布局找出来.
  
  因为在一个Activity里如果直接用findViewById()的话,对应的是setConentView()的那个layout里的组件.
  
  因此如果你的Activity里如果用到别的layout,比如对话框上的layout,你还要设置对话框上的layout里的组件(像图片ImageView,文字TextView)上的内容,你就必须用inflate()先将对话框上的layout找出来,然后再用这个layout对象去找到它上面的组件,如:
  
  View view=View.inflate(this,R.layout.dialog_layout,null);
  
  TextView dialogTV=(TextView)view.findViewById(R.id.dialog_tv);
  
  dialogTV.setText("abcd");

三种方式可以生成LayoutInflater:
  
  LayoutInflater inflater=LayoutInflater.from(this);
  
  LayoutInflater inflater=getLayoutInflater();
  
  LayoutInflater inflater=(LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);

然后调用inflate方法将xml布局文件转成View
  
  publicViewinflate(intresource,ViewGrouproot,booleanattachToRoot)
  
  在View类中,也有inflate方法
  
  publicstaticViewinflate(Contextcontext,intresource,ViewGrouproot)
分享到:
评论

相关推荐

    LayoutInflater源码分析 inflate方法的区别

    总之,理解`LayoutInflater`的`inflate`方法及其参数是Android开发中的基础技能。正确使用这些方法能够帮助我们构建更加灵活、高效的用户界面。在处理ListView、RecyclerView等需要复用视图的场景时,尤其需要注意...

    Android view构造方法第3个参数详解 demo

    为了处理这些属性,我们需要在自定义View中重写` inflate()`方法或者实现`getAttributeValue()`。例如,我们可以这样获取自定义属性的值: ```java @Override protected void onFinishInflate() { super....

    012_android 之消息提示toast 和Context

    本教程“012_android 之消息提示toast 和Context”将深入讲解这两个关键知识点,帮助开发者更好地理解和运用它们。 首先,我们来谈谈Android中的消息提示Toast。Toast是一种轻量级的通知方式,它可以在屏幕上的任意...

    android-WatchViewStub-master.zip

    - 当调用WatchViewStub的`inflate()`方法时,它会解析并替换自己为子布局,同时执行相关的视图生命周期方法,如`onCreateView()`和`onFinishInflate()`。 - 这种延迟加载机制可以减少启动时间和内存消耗,尤其对于...

    android操作XML资源

    在Java代码中,我们可以使用LayoutInflater类的inflate方法将XML布局加载到View对象中。比如: ```java LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View ...

    android Fragment Demo

    在Android应用开发中,Fragment是Android SDK中的一个重要组件,它被设计用来支持动态和模块化的用户界面。Fragment可以看作是Activity的一...理解并熟练运用Fragment是成为一名合格的Android开发者的关键技能之一。

    Android初级入门——菜单Menu的简单使用

    首先,菜单在Android中的主要用途是为用户提供应用程序的主要操作选项,这些选项通常在屏幕的顶部或者在动作栏(Action Bar)中显示。菜单可以分为几种类型:选项菜单(Option Menu),上下文菜单(Context Menu),弹出...

    android 采用windowmanager屏蔽home键

    首先,我们需要创建一个悬浮窗口(Floating Window),这是`WindowManager`的主要用途之一。悬浮窗口可以覆盖在其他应用之上,我们可以通过监听悬浮窗口的触摸事件来捕获Home键的按下情况。 1. **添加权限**:在...

    Android getViewById和getLayoutInflater().inflate()的详解及比较

    让我们深入探讨这两个方法的功能、用途以及它们之间的区别。 `getViewById()`方法主要用于从当前视图层次结构中查找指定ID的View对象。它的语法如下: ```java View findViewById(int id); ``` 当你已经知道了一...

    android面试题(初级)

    - 使用`LayoutInflater`的`inflate()`方法的第三个参数(root),避免查找根节点。 5. **数据存储方式**: - 文件存储:简单灵活,适用于小量数据。 - SharedPreferences:轻量级的键值对存储。 - SQLite数据库...

    android layoutinflator

    之后将 `parser` 传递给 `inflate()` 方法进行解析。 四、`LayoutInflater` 示例 假设我们有一个名为 `activity_main.xml` 的布局文件,其中包含一个按钮。我们可以在Activity的 `onCreate()` 方法中使用 `...

    android fragment demo

    Fragment的主要用途包括: 1. **多屏适配**:Fragment帮助开发者在不同尺寸的屏幕上创建可重用的UI模块,比如在平板上可以同时显示多个Fragment,而在手机上则可以切换或堆叠显示。 2. **模块化开发**:Fragment...

    android 用ViewStub实现Tab选项卡效果

    你可以通过设置`layout="@layout/layout_to_inflate"`属性来指定需要加载的布局文件,并通过`inflate()`方法将其加载到当前视图中。 要实现Tab选项卡,我们通常会用到`TabLayout`组件,它是Android设计支持库的一...

    Android开发之PopupWindow实现弹窗

    ### Android开发之PopupWindow实现弹窗 在Android应用开发中,`PopupWindow`是一个非常实用且灵活的组件,用于创建自定义的弹出窗口。它允许开发者在一个任意位置展示一个包含自定义视图的浮动窗口,这使得它可以...

    Android高手进阶教程

    2. **使用MenuInflater加载菜单布局**,通常是在Activity或Fragment中调用`inflate()`方法。 #### 七、Android中Preferences的使用 Preferences是一种轻量级的数据存储方式,适合存储简单的键值对数据。主要应用...

    Android Dialog大全源码

    每种Dialog都有其特定的用途,比如AlertDialog用于展示警告信息或提供选择项,ProgressDialog则用于显示任务执行的进度。 1. **AlertDialog**:Alert Dialog是Android中最常见的对话框,它可以包含一个标题、一个...

    动态加载控件android

    通过 `inflate()` 方法,可以在运行时动态加载布局文件中的控件。 - **Java/ Kotlin 代码创建**: 直接通过代码创建 View 对象,例如 `new TextView(context)`,然后设置属性并添加到父容器中。 - **Fragment**: ...

    Android应用源码之悬浮窗 监视内容.zip

    在Android系统中,悬浮窗(Floating Window)是一种特殊类型的窗口,它可以在其他应用程序之上显示,让用户在不切换应用的情况下查看或操作悬浮窗内容。本压缩包"Android应用源码之悬浮窗 监视内容.zip"可能包含了一...

    Android popupwindow 实例及使用

    PopupWindow在实际应用中有很多用途,例如: 1. 创建下拉菜单:当用户点击一个选项时,弹出一个包含多个选择的PopupWindow。 2. 提示信息:显示临时通知或提示,用户看完后自动消失。 3. 输入框:在不离开当前界面...

    android ICS式下拉菜单实现详解 PopupWindow

    其核心用途在于为用户提供额外的信息或者操作选项,而无需跳转到新的页面或Activity。 #### 使用PopupWindow实现下拉菜单的关键步骤 1. **创建PopupWindow实例** 创建一个`PopupWindow`实例通常需要传入三个参数...

Global site tag (gtag.js) - Google Analytics