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

使用视图绑定替代 findViewById

本文梗概 在 build.gradle 中就可以方便快捷地开启视图绑定且无须额外引入依赖库 视图绑定会为 Module 中的每一个布局文件生成一个绑定对象 (activity_awesome.xml...在 Activity 中使用视图绑定 假如您有一个布局文件名叫 activity_awesome.xml,其中包含了一个按钮和两个文本视图。...视图绑定会为这个布局生成一个名叫 ActivityAwesomeBinding 的类,布局文件中所有拥有 id 的视图,都会在这个类中有一个对应的属性: override fun onCreate(savedInstanceState...这将造成同一布局被填充两次,同时监听器也会被添加到错误的布局对象中。...Android Studio 被优化为可以在您编辑过 XML 布局文件后立即更新绑定对象。 让我们通过一个示例 XML 布局所生成的代码,来了解一下视图绑定究竟生成了什么。

1.6K30

用户界面开发基础

想要在Activity中添加控件,最直接的方法就是在onCreate中装载xml布局文件或者使用Java代码添加控件。...(View Container) 视图类 (例如TextView…) 使用xml布局文件定义视图 注意事项: XML布局文件的扩展名必须是xml XML布局文件名必须符合Java变量的命名规则(以为在R...在不同的XML布局文件中可以存在相同ID的视图,但是在同一个XML文件中,虽然也可以有相同ID的视图,但是通过ID获取视图时,只能够获取按照定义的顺序的第一个视图对象,其他相同ID值的视图对象将无法回去...,因此在同一个XML布局文件中尽量使视图ID唯一。...一个视图只能有一个父视图。也就是说一个视图只能被包含在一个容器视图中。因此,在向容器视图中添加其他视图时,不能将XML布局文件中非根节点的视图对象添加到其他的容器视图中。

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    例说 Constraint Layout:初探

    当然,任何布局都有其缺点和使用限制, CL 也是有缺点的:使用它会使你的 APK 增大 150k 左右;其性能负担也会随着界面中的控件数量以及约束条件的增加而增加,等等。...3.2 使用入门 3.2.1 将传统布局自动转换为约束布局 新版的 AS 自动生成新 XML 布局时,默认使用约束布局,然而我们工程中有无数既有的布局,它们都不是 CL,如果要想人肉将它们都转换成 CL...一个约束布局在编辑器视图中的样子 然而将程序跑起来后,在手机上我们看到所有添加的控件都堆积到了左上角: ? Figure 11....而在编辑器视图中,View 之所以没有错位,是因为 AS 会在 View 添加后自动增加属性来表示他们在编辑器中的位置。这个布局代码如下: ?...删除编辑器相关属性后,此约束布局在视图中的样子 这些编辑器相关的属性仅仅是为了我们在编辑时预览方便而设置的,编译后并不起作用。

    2.1K10

    Android Studio 4.0+ 中新的 UI 层次结构调试工具

    和上一个版本不同的是,新版本的布局检查器可以以三维的视角来展现视图层次结构,您可以直观地看到视图的布局方式。...通过该工具您可以逐层来检查视图层次结构,同时它还会展示所有视图的属性,包括继承自视图父类的属性。 接下来我们一起了解一下最新版本的布局检查器是如何发挥作用的。...点击 rotation 按钮会在二维和三维视图之间进行切换。当处于旋转模式时,您可以旋转 UI 层次结构。旋转操作可以帮助您更直观地了解视图的组织结构。...这里我们有一个简单的示例应用,它包含一个 fragment,其中有一些静态文本和一个图片。如果您在阅读文章时想同步进行操作,可以先按照下面步骤操作创建工程。...首先我们可以看到 LinearLayout 里布局了一个工具栏 (toolbar),然后是 navigation host。在它下面,您可以看到导航栏位于最下方——看来底部的导航栏被挤出了屏幕。

    2.5K20

    Android Studio 4.0+ 中新的 UI 层次结构调试工具

    和上一个版本不同的是,新版本的布局检查器可以以三维的视角来展现视图层次结构,您可以直观地看到视图的布局方式。...点击 rotation 按钮会在二维和三维视图之间进行切换。当处于旋转模式时,您可以旋转 UI 层次结构。旋转操作可以帮助您更直观地了解视图的组织结构。...您可以通过点击任何已声明的属性来打开布局相关的 xml 文件。和旋转特性一样,这个功能也仅适用于 Android 10 以上的设备。 通过布局检查器您还可以将新设计的界面和现有 UI 进行比较。...这里我们有一个简单的示例应用,它包含一个 fragment,其中有一些静态文本和一个图片。如果您在阅读文章时想同步进行操作,可以先按照下面步骤操作创建工程。...首先我们可以看到 LinearLayout 里布局了一个工具栏 (toolbar),然后是 navigation host。在它下面,您可以看到导航栏位于最下方——看来底部的导航栏被挤出了屏幕。

    2.6K10

    Android Studio 中的 Motion Editor 用法详解

    Motion Editor 是一款专门针对 MotionLayout 布局类型所构建的可视化编辑器,通过它可以轻松地创建和预览动画效果。...的 XML 文件中选择 Design 或 Split 视图 时,会自动打开 Motion Editor。...在 Attribute 面板中预览 Constraint 可视化效果 当您想对某个视图属性上添加动画效果时,而该属性却不属于 ConstraintLayout 或者 MotionLayout API (...我们还为自定义视图属性添加了自动填充和输入验证的功能,方便您的操作。 ?...您可以使用 Design 视图和 Blueprint 视图预览动画,在没有很多视觉干扰的情况下更清晰地了解视图是如何移动的。 ? 我们还为视图在屏幕上的路径添加了可视化的功能,包括关键帧的标记。

    2.2K10

    SimpleAdapter简单用法

    官方文档: 这是一个简单的适配器,可以将静态数据映射到XML文件中定义好的视图. 你可以将 Maps 的 ArrayList 指定为用于列表的数据....Maps 中包含用于一行的数据. 你也可以指定 XML 文件,其中定义了用于显示行的视图, 通过 Map 的关键字映射到指定的视图.绑定数据到视图分两个阶段....在列表中的每个条目对应列表中的一行,每一个map中应该包含所有在from参数中指定的键 R.layout.item, //一个定义列表项的布局文件的资源ID。...布局文件将至少应包含那些在to中定义了的ID from, //一个将被添加到Map映射上的键名 to//将绑定数据的视图的ID,跟from参数对应...); lv.setAdapter(adapter); } } Simple对应视图simple.xml代码 ListView一行视图item.xml代码 说明:item.xml中button

    87060

    Pro ASP.NET MVC –第五章 使用Razor「建议收藏」

    Razor是微软在MVC3中引入的视图引擎的名字,在MVC4中对其进行了改进(尽管改动非常小)。视图引擎处理ASP.NET内容、寻找指令,典型地用于插入动态数据并输出到浏览器中。...创建布局 为了创建布局,你可以在视图文件夹上点击右键,然后选择添加,然后选择MVC4布局页面(Razor)模板 在出现的对话框中,把布局文件命名为_BasicLayout.cshtml 然后点击确认按钮...布局文件中的所有元素都将应用到使用该布局文件的视图中,这也就是为什么说视图就是模板。在下面的代码中,我们添加了一些标记以演示它们是如何工作的 地,你不应该在行为方法中格式化数据,然后将其传递给视图。相反地,应该让视图按照所需的方式呈现数据。...运行应用程序,你可以在浏览器中看到如下的结果 条件表达式在Razor视图中非常重要,因为它允许你根据行为方法产生的数据值调整视图的内容。

    2.9K20

    【Android从零单排系列三十四】《Android布局介绍——ConstraintLayout》

    开发者可以使用约束条件(如layout_constraintLeft_toLeftOf、layout_constraintTop_toTopOf等)来定义视图与其他视图或边界的关系,从而精确控制视图在布局中的位置和大小...:' 布局文件定义:在布局文件(通常是XML文件)中,以ConstraintLayout作为根容器来定义布局。...-- 添加视图元素 --> 添加视图元素:在 ConstraintLayout 内部添加需要布局的视图元素...:在XML文件中,你可以通过预览功能(如Android Studio中的布局编辑器)来查看布局效果,并根据需要进行微调和修改。...开发者可以使用约束条件(如layout_constraintLeft_toLeftOf、layout_constraintTop_toTopOf等)来定义视图与其他视图或边界的关系,从而精确控制视图在布局中的位置和大小

    45620

    【Android从零单排系列三十】《Android布局介绍——RelativeLayout》

    每个子视图都可以通过设置android:layout_alignXXXX属性来指定与其他视图的相对位置关系。布局规则作用于子视图,而不是整个容器,使得开发者能够更精确地控制视图的放置方式。...编程控制:除了在XML布局文件中设置属性外,开发者也可以通过编程方式使用RelativeLayout的方法来动态地添加和管理子视图,例如使用addView()、setLayoutParams()等方法。...二 RelativeLayout使用方法 在XML布局文件中定义一个RelativeLayout容器: <RelativeLayout xmlns:android="http://schemas.android.com...-- 添加子视图 --> 在RelativeLayout容器内部添加子视图,并设置它们的布局属性: <RelativeLayout ...> 在XML布局文件中设置属性之外,你还可以使用Java代码动态地操作RelativeLayout。

    59130

    View绘制流程深度剖析之-inlate

    (attrs); // 不将该xml布局添加到root上的话 if (!...最后有一个if语句,这里的意思是每个ViewGroup下面的所有层级的视图解析完成后,会调用这个ViewGroup的onFinishInflate方法,通知视图解析并添加完成,所以我们在自定义ViewGroup...如果是在ViewGroup中使用,那么接着判断layout的id是否有效的,如果不是,那么就要抛出异常,也就是include必须包含有效的视图布局,然后开始解析layout部分视图,如果跟布局是merge...布局中有两种写法,一种是系统自带的视图,例如:FrameLayout,LinearLayout等,一种是自定义的或者是Support包中的也就是带有包名的视图: <?...: inflate方法的第二个参数root不为null,加载xml文件时根视图才有具体宽、高属性; inflate方法的第三个参数attachToRoot是true时,解析的xml布局会被添加到root

    57030

    Android布局优化三剑客:include+merge+ViewStub

    1、include include的中文意思是“包含”、“包括”,当你在一个主页面里使用include标签时,就表示当前的主布局包含标签中的布局,这样一来,就能很好地起到复用布局的效果了。...别忘了我们的目的是复用,当你在一个主布局中使用include标签添加两个以上的相同布局时,id相同就会冲突了,所以重写它可以让我们更好地调用它和它里面的控件。...我们接着在ViewOptimizationActivity的布局添加RelativeLayout,然后使用include标签将layout_merge.xml添加进去: <RelativeLayout...3、ViewStub 你一定遇到这样的情况:页面中有些布局在初始化时没必要显示,但是又不得不事先在布局文件中写好,虽然设置成了invisible或gone,但是在初始化时还是会加载,这无疑会影响页面加载速度...这样一来,在mInflatedViewRef不为空,也就是已经填充了布局的情况下,ViewStub中的setVisibility()方法实际上是在设置内部视图的可见性,而不是ViewStub本身。

    3.5K53

    Activity中setContentView过程

    mDecor做为根视图将该窗口根布局添加进去,然后获取id为content的FrameLayout返回给mContentParent对象。...在setContentView中,PhoneWindow的setContentView方法中的下面两种方式都把这个FrameLayout作为了main_activity.xml的根视图: 1. mLayoutInflater.inflate...这里的mContentParent指的是屏幕显示的内容区,而我们设置的activity_main.xml布局实际上是在一个id为content的FrameLayout中的,这个FrameLayout也就是前面一直提到的...(我们看源码的话就会发现,不止screen_simple.xml,screen_toobar.xml,screen_title.xml等等布局文件中都含有这个id为content的FrameLayout...(在onCreate中调用了setContentView,所以把除了decorView之外的所有的view都已经添加进去了。)

    26720

    【Android从零单排系列二十九】《Android布局介绍——LinerLayout》

    它可以作为容器来包含其他视图组件,并根据指定的布局属性进行排列。...添加子视图元素: 在LinearLayout标签内部添加其他视图组件作为其子元素,例如TextView、Button等。根据需要可以使用不同的布局参数来控制子视图的大小和对齐方式。...使用LinearLayout时,可以考虑以下几点: 在XML布局文件中使用标签来定义LinearLayout。...在LinearLayout中添加子视图(如Button、TextView等)作为其子元素,并使用布局参数(layout_width和layout_height等)设置每个子视图的大小和对齐方式。...这些方法和属性可以用于灵活地控制LinearLayout布局的方向、对齐方式、权重分配等,以满足不同的布局需求。其中,方法可以通过编程方式进行设置,而属性可以在XML布局文件中进行设置。

    26030

    【Android应用开发】Android Studio 简介 (Android Studio Overview)

    Project 中会生成 .idea 目录, .idea 目录中有大量的 XML 文件; -- 文件配置 : .idea 目录包含了大量的 XML 配置文件, 每个 xml 文件都包含了一个关于特定领域的配置文件..., 例如 compiler.xml, encodings.xml, moudles.xml 等等; -- 信息重要性 : 几乎所有 .idea 目录中的文件都包含了 Project 项目的核心信息, 例如...java 路径; -- res 资源 : moudleName/src/main/res 路径, 包含图片, 布局, 国际化等资源; -- 测试相关资源 : moudleName/src/androidTest...为单个的特殊编译配置版本 运行 Lint, 也可以为所有的编译配置版本运行 Lint;  -- 具体配置 : 在 build.gradle 配置文件中, 添加一个 lintOption 属性;...工具集合, 控制设备行为; -- 启动 : 如果开发者要去 调试 Android 调试器, 点击底部工具栏的 Android 按钮;  -- 布局层级监控 : 包括 视图组件层级查看器 去帮助开发者优化布局

    2.3K41
    领券