首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

具有2种可能布局的ViewBinding

ViewBinding是一种用于在Android应用中绑定视图的库。它可以帮助开发者更方便地访问和操作布局文件中的视图元素,避免了传统的findViewById方法的繁琐和容易出错的过程。

ViewBinding有两种可能的布局方式:

  1. 基于Activity的布局方式: 在这种布局方式下,ViewBinding会为每个Activity生成一个绑定类。开发者可以通过调用Activity的setContentView方法来设置布局文件,并使用生成的绑定类来访问布局文件中的视图元素。这种方式适用于单个Activity的布局。
  2. 优势:
    • 简化了视图绑定的过程,避免了手动查找和转换视图的麻烦。
    • 提高了代码的可读性和可维护性,减少了因为视图ID错误而导致的运行时异常。
    • 支持空安全,避免了空指针异常。
    • 应用场景:
    • 单个Activity的布局文件中需要频繁操作视图元素的情况。
    • 需要提高代码的可读性和可维护性的情况。
    • 腾讯云相关产品和产品介绍链接地址:
    • 腾讯云移动开发平台:https://cloud.tencent.com/product/mmp
  • 基于Fragment的布局方式: 在这种布局方式下,ViewBinding会为每个Fragment生成一个绑定类。开发者可以在Fragment的onCreateView方法中使用生成的绑定类来绑定布局文件,并通过绑定类来访问布局文件中的视图元素。这种方式适用于多个Fragment共享一个Activity的布局。
  • 优势:
    • 简化了Fragment中视图绑定的过程,避免了手动查找和转换视图的麻烦。
    • 提高了代码的可读性和可维护性,减少了因为视图ID错误而导致的运行时异常。
    • 支持空安全,避免了空指针异常。
    • 应用场景:
    • 多个Fragment共享一个Activity的布局文件中需要频繁操作视图元素的情况。
    • 需要提高代码的可读性和可维护性的情况。
    • 腾讯云相关产品和产品介绍链接地址:
    • 腾讯云移动开发平台:https://cloud.tencent.com/product/mmp

总结: ViewBinding是一种方便的视图绑定库,可以简化Android应用中视图操作的过程。它提供了基于Activity和Fragment两种可能的布局方式,适用于不同的应用场景。使用ViewBinding可以提高代码的可读性和可维护性,并减少因为视图操作导致的运行时异常。腾讯云的移动开发平台可以提供相关的支持和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android Studio 3.6中新视图绑定工具ViewBinding 用法详解

此类具有两个字段:一个是名为 name TextView,另一个是名为 button Button。该布局 ImageView 没有 ID,因此绑定类中不存在对它引用。...但是需要注意是,如果我们布局文件分为 layout和layout-land,我们我们在定义布局时候可能会存在不同viewId,如果是使用findViewById 或者 Butter Knife...我们在使用 ViewBinding 时候,绑定类贴心为我们做了相关判断。通过 @Nullable 和 @NonNull 两个注解来告诉开发者,哪些view可能为空。...和databinding相比较就是数据绑定库仅处理使用 <layout 代码创建数据绑定布局。它具有局限性。...此外,当视图仅在布局某些配置中存在时,在绑定类中包含其引用字段将用@Nullable •类型安全性:每个绑定类中字段具有与其在XML文件中引用视图匹配类型。

1.6K20

ViewBinding 视图绑定

《金刚经》 概述 ViewBinding 是和 Android Studio 3.6 一起发布,Gradle 要求 3.6.0+,ViewBinding 可以轻松编写可与视图交互代码,在模块中启用...ViewBinding 后,系统会该模块中每个 XML 布局文件生成一个绑定类。...绑定类中会为所有具有 ID 视图生成对应引用。 使用 视图绑定功能可以按模块启用。在模块 build.gradle 文件中添加如下配置。...buildFeatures {viewBinding true} 如果需要将某个布局文件禁用 ViewBinding 功能,可以在布局文件根视图添加如下配置: <LinearLayout tools...该类具有两个字段:一个是名为name TextView,另一个是名为 button Button。该布局 ImageView 没有 ID,因此绑定类中不存在对它引用。

47440

Android 视图绑定 ViewBinding

(Databinding就需要我们调整xml布局 才会生成。) 实例:假设创建了一个activity_main.xml 布局文件: <?...总结 与使用 findViewById 相比,视图绑定具有的优点: Null 安全:由于视图绑定会创建对视图直接引用,因此不存在因视图 ID 无效而引发 Null 指针异常风险。...此外,如果视图仅出现在布局某些配置中,则绑定类中包含其引用字段会使用 @Nullable 标记。 类型安全:每个绑定类中字段均具有与它们在 XML 文件中引用视图相匹配类型。...易于使用:视图绑定不需要特别标记 XML 布局文件,因此在应用中采用速度更快。在模块中启用视图绑定后,它会自动应用于该模块所有布局。...而DataBinding 优势就在于:布局和数据双向绑定了。 所以其实我们可以在项目之中同时使用视图绑定和数据绑定。

1.5K10

Android:Jetpack之视图绑定——ViewBinding

它是一套库、工具和指南集合,称作Jetpack开发工具集可能更贴切。...→可观察数据持有者类,与常规Observable不同,它是具有生命周期感知; Navigation→应用内导航,Fragment管理框架,或者说路由; Paging→列表分页,可以轻松实现分页预加载以达到无限滑动效果...系统进行兼容; Android KTX→ 基于Kotlin特性为Android、Jetpack提供一些简易易用扩展; Multidex→ 为具有多个Dex文件应用提供支持; Test→ 用于单元和运行时界面测试...viewBinding { enabled = true } } 不需要生成绑定类布局XML文件,可在根节点中添加下述属性: <LinearLayout...另外,如果你想了解布局采集和写Layout部分逻辑,可以参考 《ViewBinding 本质》 笔者卷不动了...

1.2K30

【JetPack】为现有 Android 项目配置视图绑定 ( ViewBinding ) 模块 ( 视图绑定不影响传统布局操作 | 视图绑定类关联 Activity | 视图绑定类本质 )

视图绑定模块默认为全部布局生成绑定类 ; 视图绑定 ( ViewBinding ) 模块一旦启用 , 应用全部布局都会默认自动生成一个视图绑定类 , 如果生成了视图绑定模块 , 是否对于已经使用 findViewById...Android 项目中布局文件数量比较大 ; 现在 Android 项目如果比较大 , 布局文件可能存在上百个 , Activity , Fragment , 自定义布局 Dialog , 自定义...先说下结论 : 视图绑定 只是为我们额外生成了一种新操作布局和组件方式 , 不会对之前已经写好代码产生影响 ; II . 视图绑定 ( ViewBinding ) 定制 ---- 1 ....在启用了 ViewBinding 模块后 , 布局中如果没有屏蔽视图绑定 , 那么会为该布局生成布局绑定类 , 此时如果进行正常操作 , 仍然不影响 , 可以不用修改之前代码 ; 3 ....视图绑定 ( ViewBinding ) 本质分析 ---- 视图绑定 ( ViewBinding ) 其本质就是提供了一种加载布局文件便捷方式 , 与下面的操作本质是类似的 , 只是可以省略很多代码

71510

Android使用ViewBinding

ViewBinding 使用了编译时生成绑定类,在 xml 布局文件中每个视图都会生成一个对应绑定类对象,因此在编译时检测到视图名称错误。...ViewBinding 可以生成类型安全代码,避免了手动查找和强制转换视图对象麻烦。 ViewBinding 不会增加 APK 大小,因为它只是编译时生成代码。...在多个模块中引用同一个视图时可能会出现命名冲突问题,需要通过手动指定全限定名解决。...Kotlin扩展 对视图数据获取和类型安全性没有提供直接支持,需要手动处理可能空指针异常和类型转换。 Kotlin扩展 会增加 APK 大小,因为它是在运行时动态添加函数。...如果想在生成绑定类时忽略某个布局文件,将tools:viewBindingIgnore=”true”`属性添加到相应布局文件根视图中。

51421

kotlin-android-extensions插件也被废弃了?扶我起来

kotlin-android-extensions插件可能算得上是我最喜欢一个Kotlin在Android上特性了。...当时我还说,不可能呀,这个插件这么好用,而且Kotlin也是Google未来主推技术,可能只是Android Studio 4.1bug吧。 然而,没过多久我就被打脸了。...在Activity中使用ViewBinding 一旦启动了ViewBinding功能之后,Android Studio会自动为我们所编写每一个布局文件都生成一个对应Binding类。...对引入布局使用ViewBinding 关于ViewBinding使用其实还有另外一种比较特殊场景,那就是如何对引入布局使用ViewBinding。...好了,这大概就是关于ViewBinding所有内容了,至少我已经想不出还有什么更多用法,相信本篇文章也足以将你工作中可能遇到ViewBinding相关问题全部覆盖到。

2.7K31

Android:Jetpack之视图绑定——ViewBinding

它是一套库、工具和指南集合,称作Jetpack开发工具集可能更贴切。...→可观察数据持有者类,与常规Observable不同,它是具有生命周期感知; Navigation→应用内导航,Fragment管理框架,或者说路由; Paging→列表分页,可以轻松实现分页预加载以达到无限滑动效果...系统进行兼容; Android KTX→ 基于Kotlin特性为Android、Jetpack提供一些简易易用扩展; Multidex→ 为具有多个Dex文件应用提供支持; Test→ 用于单元和运行时界面测试...viewBinding { enabled = true } } 不需要生成绑定类布局XML文件,可在根节点中添加下述属性: <LinearLayout...另外,如果你想了解布局采集和写Layout部分逻辑,可以参考 《ViewBinding 本质》 笔者卷不动了...

1K30

【JetPack】视图绑定 ( ViewBinding ) 各种应用 ( 视图绑定两种方式 | Activity 布局 | 对话框布局 | 自定义组件布局 | RecyclerView 列表布局 )

RecyclerView 列表布局 应用 视图绑定 ( ViewBinding ) VI . GitHub 代码地址 I ....XxxBinding.inflate( LayoutInflater ) 与界面绑定 : 这种方式加载布局与界面关联性不大 , 需要调用额外函数 , 将视图绑定类与界面进行绑定 , Activity..., 就是使用这种方式 , 调用该方法后 , 可以直接与界面进行绑定 , 界面中显示就是 XxxBinding 对应布局内容 ; II ....通过视图绑定类访问布局 TextView 布局 binding.textView.setText("视图绑定自定义组件示例\nMyViewBinding"); }...RecyclerView 列表布局 应用 视图绑定 ( ViewBinding ) ---- RecyclerView 列表布局 应用 视图绑定 ( ViewBinding ) : ① 视图绑定需要在

1.5K30

【Jetpack】ViewBinding 与 DataBinding 简单对比

; 数据模型 Model 就是 数据类实例对象 ; 视图 View 指的是 Xml 布局文件 ; DataBinding 就是将 数据模型实例对象 配置到 Xml 布局文件 中 ; DataBinding...可以 在 Activity / Fragment / Dialog 中获取组件 , 在 Xml 布局文件中 设置点击事件 , 设置文本 , 设置可见性 等等 ; 二、ViewBinding ViewBinding...是 2019 年 Android Studio 3.6 版本 开始使用 , 其作用是 为 Xml 布局文件 生成绑定类 , 借助该 绑定类 , 可以 快速获取 Xml 中组件 ; ViewBinding...可以代替代码逻辑 : findViewById 定义 View 组件成员字段 ViewBinding 与 ButterKnife 功能基本一致 , 编译性能优于 ButterKnife , 因为...ButterKnife 中使用了大量注解 , 其编译速度要低于 ViewBinding ; ViewBinding 与 DataBinding 比较 , ViewBinding 是一个量级较轻函数库

34120

Android视图绑定ViewBinding使用

概述 在我们开发过程中,需要获取XML布局文件中ViewId,以便其赋值显示,我们习惯使用findViewById进行操作,可这样会导致很多模版代码出现。...分析 本文主要从以下方面对ViewBinding进行分析: 使用能解决什么问题; 使用流程; 与之前方法比较; 原理; 1.使用能解决什么问题 顾名思义ViewBinding意思就是如何将view与代码绑定在一起...2.使用流程 在要使用ViewBinding module gradle文件中开启ViewBinding android { …………… viewBinding {...enabled = true } …………… } 如果在使用过程中开发者不想为某个布局文件生成binding类,则可以使用如下属性添加到布局根视图中即可: <androidx.constraintlayout.widget.ConstraintLayout...在gradle文件中开启ViewBinding功能后,编译器就会为此模块下每个布局文件都产生一个对应绑定类。

2.5K10

ViewBinding 与 Kotlin 委托双剑合璧

1、简洁性: findViewById 和 ButterKnife 需要在代码中声明很多变量,其他几种方案代码简洁度较好; 2、编译检查: 编译期间主要有两个方面的检查:类型检查 + 只能访问当前布局...1.3 ViewBinding 实现原理 AGP 插件会为每个 XML 布局文件创建一个绑定类文件 xxxBinding ,绑定类中会持有布局文件中所有带 android:id 属性 View 引用...那么,所有 XML 布局文件都生成 Java 类,会不会导致包体积瞬间增大?不会, 未使用类会在混淆时被压缩。 ---- 2....viewBinding { enabled = true } } 对于不需要生成绑定类布局文件,可以在根节点声明 tools:viewBindingIgnore="true...总结 ViewBinding 是一个轻量级视图绑定方案,Android Gradle 插件会为每个 XML 布局文件创建一个绑定类。

1.6K20

Google挖坑后人埋-ViewBinding(上)

资源ID重名 由于kotlin-android-extensions是通过viewid名直接引用,所以多个布局同名id,就需要手动对import进行重命名处理,而且经常会引用错误布局文件,导致运行崩溃...当然也有一些优势: Kotlin Java通吃 空安全 ViewBinding初步 ViewBinding就是为了解决kotlin-android-extensions这些使用问题而诞生,它目的只有一个...要使用ViewBinding非常简单: buildFeatures { viewBinding true } 当我们开启ViewBinding之后,在编译时,AGP会自动帮我们给每个xml布局创建一个... 使用 开启ViewBinding后,会给xml布局生成XXXBinding文件,位于build/generated/data_binding_base_class_source_out...include来引入新布局也是一个很常用方式,kotlin-android-extensions由于底层使用是运行时findViewById,所以不会存在什么问题,但是ViewBinding就不一样了

2.1K20

Android视图绑定ViewBinding使用

概述 在我们开发过程中,需要获取XML布局文件中ViewId,以便其赋值显示,我们习惯使用findViewById进行操作,可这样会导致很多模版代码出现。...分析 本文主要从以下方面对ViewBinding进行分析: 使用能解决什么问题; 使用流程; 与之前方法比较; 原理; 1.使用能解决什么问题 顾名思义ViewBinding意思就是如何将view与代码绑定在一起...2.使用流程 在要使用ViewBinding module gradle文件中开启ViewBinding android { …………… viewBinding {...enabled = true } …………… } 如果在使用过程中开发者不想为某个布局文件生成binding类,则可以使用如下属性添加到布局根视图中即可: <androidx.constraintlayout.widget.ConstraintLayout...在gradle文件中开启ViewBinding功能后,编译器就会为此模块下每个布局文件都产生一个对应绑定类。

2.7K20

Android Studio3.6中View Binding初探及用法区别

在模块中启用视图绑定后,它将为该模块中存在每个XML布局文件生成一个绑定类。绑定类实例包含对在相应布局具有ID所有视图直接引用。 在大多数情况下,视图绑定替换findViewById。...viewBinding { enabled = true } } 如果要在生成绑定类时忽略布局文件,则将 tools:viewBindingIgnore=”true” 属性添加到该布局文件根视图中...</LinearLayout 使用方法 如果为模块启用了视图绑定,则将为其包含每个XML布局文件生成一个绑定类。 每个绑定类都包含对根视图和所有具有ID视图引用。...与使用findViewById相比,视图绑定具有重要优势: •空安全性:由于视图绑定会创建对视图直接引用,因此不会因无效视图ID而导致空指针异常风险。...此外,当视图仅在布局某些配置中存在时,在绑定类中包含其引用字段将用@Nullable •类型安全性:每个绑定类中字段具有与其在XML文件中引用视图匹配类型。

69942

Android MVVM框架搭建(十)Hilt、ViewBinding、Activity Result API

对于Hilt介绍使用就先到这里,因为这样改动项目之后,一些不熟悉Hilt可能一时半会儿还适应不了,因此一些其他用法就先不写了,后续如果有需要我补充我再写,或者在我觉得合适时候去增加Hilt其他用法...在启动视图绑定后,系统会为改模块中每个xml文件生成一个绑定类,绑定类实例包含对在相应布局具有 ID 所有视图直接引用。...此外,如果视图仅出现在布局某些配置中,则绑定类中包含其引用字段会使用 @Nullable 标记。 类型安全:每个绑定类中字段均具有与它们在 XML 文件中引用视图相匹配类型。...就是只要你配置了哪一行代码,那么你项目中每一个xml布局文件都会生成对应类文件,比如ActivityAboutBinding,这个文件生成方式和DataBinding如出一辙。...忽略布局文件 这里还有一个问题,就是我刚才说到ViewBinding一旦开启就会对项目中xml文件都生成一个类文件,那么可不可以不生成这个文件呢?当然是可以

1.8K30

XPage系列|是时候抛弃ButterKnife了

如果我还想继续使用XPage的话, 就不得不把Gradle插件降到5.0版本以下, 这在ButterKnife被废弃, Viewbinding取而代之大趋势下, 显然是不合适....下面我简单列举一下: 类型安全: ViewBinding会基于布局View生成类型正确属性。...比如,在布局中放入了一个 TextView ,视图绑定就会暴露出一个 TextView 类型属性供开发中使用。...空安全: ViewBinding会检测某个视图是不是只在一些配置下存在,并依据结果生成带有 @Nullable 注解属性。所以即使在多种配置下定义布局文件,视图绑定依然能够保证空安全。...减少控件变量定义: ViewBinding会自动生成一个绑定类, 我们可以直接通过这个绑定对象去访问布局控件, 无需再为每个控件访问去定义一个个变量.

61220

Android | xml和view那些事

:著名Butterknife、 Android自带:双向绑定DataBinding、省去findViewByIdViewBinding和kotlin扩展、 性能优化篇: 掌阅:将xml转view流程提前到编译期...,二是语法简单清晰,然后在Activity中setContentView,即可完成布局加载,那具体流程是怎么样呢?...耗时,类编译耗时 类增多,意味着包体积增大 DataBinding/ViewBinding/kotlin扩展 DataBinding DataBinding可以通过binding对象直接访问到xml布局有...{}加上开关 viewBinding { enabled = true } 打开开关后,默认会给所有布局生成java类,不像DataBinding需要包上一层layout标签。...如果个别布局不需要开启ViewBinding,可以给布局根标签加上tools:viewBindingIgnore="true"。

2K11
领券