首页 > 其他分享 >Android开发 - inflate方法与创建视图解析

Android开发 - inflate方法与创建视图解析

时间:2024-07-20 09:18:24浏览次数:11  
标签:viewGroup layout 视图 xx Android inflate view

  • 简介

    • 在Android开发过程中,很多地方都不可避免的使用到inflate方法,如在给Fragment进行CreateView(创建视图)时,我们通常是inflater.inflate(R.layout.xxx, container, false)来调用inflate方法的,不难发现,inflate方法的作用是将一个 xml 布局文件变成一个 view 对象。
  • 注意事项

    1. 这玩意是用来将 xml 转换为 view

    2. 这玩意不能直接new初始化,通过ActivitySystemService获取,你也可以自定义他的源方法

    3. 因为性能问题,他只能把写在layout里被预处理过的 xml 转换为 view ,不能随便找个 xml 文件就让他转换

  • 参数解析

    • inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot) 方法有三个参数

      1. resource:视图资源,由于视图是R类内的layout管控,通常传参形式为R.layout.xxxx代表视图布局的 **xml **文件

      2. root:容器,view和它的关系就是水与水容器的关系,显而易见,它是管控视图xml文件内控件的width、height等等属性的,如果为null,那部分属性就会失去效用,甚至直接导致编译的程序崩溃,通常传承形式为 ViewGroup 类型的对象,例如在此方法调用之前定义一个变量ViewGroup viewGroup = findViewById(R.id.xx)xx代表最高级别视图的ID,后面进行传参viewGroup即可。也可以直接在getView无法获取到视图资源时(findViewById无法使用)重载onCreateView方法编辑它进行绑定视图资源:

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container) {
            View view = inflater.inflate(R.layout.xx, container, false);
            myGetView(view);	//绑定指定view
            return view;
        }
        
        public void myGetView(View view){
            //在这里进行view的功能操作
        }
        
      3. attachToRoot布尔值类型的参数,ture/false,代表是否需要一键addView。例如通常情况下想要看到自己布局的视图是需要addView进行添加视图的:

        public class MainActivity extends AppCompatActivity {
            @override
            protected void oncreate(Bundle savedInstancestate){
                super.oncreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                ViewGroup viewGroup = findViewById(R.id.viewgroup);
                View view = getLayoutInflater().inflate(R.layout.xx, viewGroup, false);
                viewGroup.AddView(view)
            }
        }
        

        传入true参数即可省略AddView步骤:

        public class MainActivity extends AppCompatActivity {
            @override
            protected void oncreate(Bundle savedInstancestate){
                super.oncreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                ViewGroup viewGroup = findViewById(R.id.viewgroup);
                View view = getLayoutInflater().inflate(R.layout.xx, viewGroup, true);
            }
        }
        

标签:viewGroup,layout,视图,xx,Android,inflate,view
From: https://www.cnblogs.com/ajunjava/p/18312721

相关文章

  • Android笔试面试题AI答之Activity(2)
    答案仅供参考,大部分为文心一言AI作答目录1.请介绍一下Activity生命周期?1.完全生命周期2.可见生命周期3.前台生命周期4.配置更改5.特殊场景2.请介绍一下横竖屏切换时Activity的生命周期变化?1.默认行为(未设置`android:configChanges`)2.设置`android:configChang......
  • Oracle数据库 oracle八大性能视图
    V$SYSSTATVSYSSTAT......
  • Android 14 适配之 - 隐式/显示 Intent 和 广播适配
    隐式Intent对隐式Intent限制:对Android14(API级别34)或更高版本为目标平台的应用,Android会限制应用向内部应用组件发送隐式intent:1.即隐式intent只能发送给导出的组件。在应用必须使用显式intent来发送组件,且被发送的组件是未被导出的属性配置。2.如果被发出的......
  • 从零开始部署yolov8到安卓手机详细教程 ——使用YOLOV8大模型开发的物体检测Android手
    1.使用了yolov8大模型来进行物体检测android手机APP⒉.使用了coco数据集进行训练,app可以检测出“人类"∵"自行车"."汽车"∵"摩托车"."飞机","公共汽车"∵"火车","卡车"∵."船","红绿灯","消防栓","停车标志"∵,"停车收费表&......
  • Android自动化 - 环境准备
    ADB简介什么是ADBADB全称为AndroidDebugBridge,起到调试桥的作用,是一个客户端-服务器端程序。其中客户端是用来操作的电脑,服务端是Android设备。ADB也是AndroidSDK中的一个工具,可以直接操作管理Android模拟器或者真实的Android设备。为什么要用ADB运行设备的......
  • Android自动化 - 基础总集
    本笔记根据微信读书的:《Android自动化测试实战》简介测试金字塔金字塔模型将测试分为单元(Unit)、服务(Service)和用户界面(UserInterface,UI)这3个层级;在测试发展的历程中,也出现了一些重新定义金字塔层级的测试模型,尽管对分层的具体描述各不相同(有人将这3个层级分别定义为单......
  • Android 小白菜鸟从入门到精通教程
    前言Android一词最早出现于法国作家利尔亚当(AugusteVilliersdel'Isle-Adam)在1886年发表的科幻小说《未来的夏娃》(L'èvefuture)中。他将外表像人的机器起名为Android。从初学者的角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了Android应用程序开发应该掌握的各方面......
  • 【蓝牙】Android 13 蓝牙源码分析
    Android13在蓝牙模块中进行了多项改进和优化。本文将详细分析其核心组件及其工作原理,包括BluetoothManagerService、AdapterService、AdapterProperties、蓝牙连接管理和JNI接口。1.BluetoothManagerServiceBluetoothManagerService是蓝牙管理的核心类,负责启动和停止蓝......
  • uni-app的checkbox组件有些情况下视图层不更新解决方案
    应用场景问题:在使用uniapp的复选框组件checkbox实现列表的全选跟不全选功能时发现,列表的checkbox视图层在某些情况下不生效    解决方法 解决方案1:利用  this.$set改变数据,即 this.$set(item,'checked',false),这个时候视图层跟数据都一起更新了,但是在上面那种......
  • Android开发 - xml规则
    基本规则所有元素都必须有关闭标签:省略关闭标签是非法的。所有元素都必须有关闭标签,例如:<p>Thisisaparagraph是非法的,正确语法为<p>Thisisaparagraph</p>标签对大小写敏感:必须使用相同的大小写来编写打开标签和关闭标签,例如:<P>Thisisaparagraph</p>是非法的,正确语......