Android inflate view的两种方式,View.inflate(Context context, @LayoutRes int resource, ViewGroup root)和LayoutInflater.from(context).inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot)。

乍一看这两种方式实现的效果都一样,View.inflate的方法更简洁,那么这两种方式有什么区别吗?

这次要说的重点就在这里,这里面有一个坑,比如在写列表的adapter时,通常要为item的初始化一个view,这时如果用View.inflate的话,是不能填ViewGroup root,得要写null,不然会抛异常:The specified child already has a parent. You must call removeView() on the child's parent first.。这里点开源码我们可以看到,inflate(resource, root, root != null);的第三个参数是否附加于该root,这个参数应该填false。

public View inflate(@LayoutRes int resource, @Nullable ViewGroup root) {

return inflate(resource, root, root != null);

}

那填了null之后就可以了吗,运行跑起来,有些情况下是view是正常的,但这里有个坑,View.inflate的时候没有填ViewGroup root,item的视图得不到父类view的信息,尺寸可能会有问题,除非item的布局把尺寸写死,不过这样并不好。

这里推荐在初始化view的时候,使用LayoutInflater.from(context).inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot)方法,这种传递的信息全面,可以自己填attachToRoot,不会出现上面那个坑。

android inflate,Android inflate view的两种方式相关推荐

  1. Android加载GIF图片的两种方式

    飞哥语录:得到一件东西最好的方式是让自己配得上它. 方式一:使用第三开源框架直接在布局文件中加载gif 1.在工程的build.gradle中添加如下 buildscript {repositorie ...

  2. Android中模拟点击的两种方式

    目前这两种方式,后面有的再继续添加. 1.当我们知道View的时候可以采用 view. performClick()方法 是使用代码主动去调用控件的点击事件(模拟人手去触摸控件) 2.点击也就是相当于 ...

  3. Android 实现图片的高斯模糊(两种方式)

    做项目时遇到要做图片模糊的需求,和微信语音通话的背景效果一样.网上有很多不错的博客,记录一下使用的两种方式. 1. 先来看看第一种,博客原文 首先创建一个工具类 /*** 快速模糊化工具*/ publ ...

  4. Android 调用系统api录音的两种方式(MediaRecorder、AudioRecord)

    废话 权限.权限.权限,必须要先获取了录音权限,其他的事情晚点再说. 另外,新版本的Android 10系统会对录音有调整,引入了一个录音焦点的概念,也就是说以前的麦克风只能一个APP使用,必须要等它 ...

  5. Android之发送短信的两种方式

    SMS涉及的主要类SmsManager 实现SMS主要用到SmsManager类,该类继承自java.lang.Object类,下面我们介绍一下该类的主要成员. 公有方法: ArrayList< ...

  6. Android 获取手机IP地址的两种方式及常见问题

    1.使用WIFI 添加权限 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE">& ...

  7. android蓝牙耳机接入,Android跟蓝牙耳机建立连接有两种方式

    2. 蓝牙耳机主动跟Android 连首先BluetoothAudioGateway 会在一个线程中收到来自蓝牙耳机的RFCOMM 连接,然后发送消息给BluetoothHeadsetService. ...

  8. 【Android 教程系列第 24 篇】在 Android Studio 中清理缓存的两种方式

    这是[Android 教程系列第 24 篇],如果觉得有用的话,欢迎关注专栏. 一:问题描述 昨天的安卓项目还好好的,今天早上打开的时候说我引入 R 文件还有其它的类出现了错误,然后点击任意一个类几乎 ...

  9. android console命令,我们可以通过两种方式进入Android的console: 1. 直接执行命令emulator -shell; 2....

    Don't use /usr        这样子编译出来的busybox才不会安装到你主机的/usr目录下.一定要选上. 4 执行make编译源码.  如果编译过程中产生无法找到头文件的错误, 可指 ...

  10. android文件追加,Android 写文件 复写和追加 两种方式

    /** * 此方法为android程序写入sd文件文件,用到了android-annotation的支持库@ * * @param buffer 写入文件的内容 * @param folder 保存文 ...

最新文章

  1. 善待离职员工,让他们成为企业的财富
  2. zabbix 进阶(二)
  3. CentOS 初体验十:文件权限查看和修改
  4. OpenCV数据类型转换:cnvertTo函数的使用
  5. 重要的动态路由OSPF(多区)
  6. (转)Web Services使用多态(XmlInclude) ,支持自定义类型
  7. java日志系统_Java日志系统
  8. 爬取猫眼电影相关信息
  9. 电子相册系统(四)用户登录
  10. VMware esxi在线增加Linux LVM硬盘不需重新启动
  11. Android飞机大战小游戏
  12. 高帝制礼作乐,周昌谏废太子
  13. 软件测试工程师职称评定细则
  14. 飞桨EasyDL助力资讯网站实现信息自动分类
  15. 天堂2 mysql一闪而过_天堂2革命闪退怎么办_天堂2革命彻底解决游戏闪退方法_手心游戏...
  16. 检测iPhone/iPod Touch/iPad设备类型 .
  17. 关于YOLOv7的分析
  18. 鲤鱼溪传说:神鱼与三仙姑
  19. cocos creator |《合成大西瓜》源码 解读
  20. python爬虫模拟登录网页:登录wish

热门文章

  1. PMOS管的简单应用
  2. DDR功能点 ODT ZQ校准
  3. wifi文件传输linux,wifi挂载Linux文件系统
  4. 百度地图保存图片_如何获得可编辑的专题分析地图底图?
  5. 02-Sentinel-2 L1C级数据bat和Python脚本批量大气校正
  6. 基于ARM裸机的知识点总结(9)------基于S5PV210的定时器、看门狗和RTC
  7. 软件开发搞定操作系统
  8. 11 Django REST Framework 针对基于类的视图添加 @csrf_exempt
  9. 键盘调节台式计算机声音,台式电脑如何用键盘控制声音开关
  10. win10 php开发环境搭建