android studio 中使用kotlin语言 直接操作布局id

android studio 中使用kotlin语言 直接操作布局id
需要在 build.gradle 文件 引入

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

(会自动生成,可忽略)然后在 Activity 文件中 引入 对应的 layout 文件 如:activity_main.xml

import kotlinx.android.synthetic.main.activity_main.*

然而,运行是会提示kotlin-android-extensions废弃

Android StudioThe ‘kotlin-android-extensions‘ Gradle plugin is deprecated.

所以我们采用viewbinding来直接操作布局id

一、ViewBinding开启
在app下build.grade中加入以下代码

AS 3.6.x

android {...viewBinding{enabled = true}
}

AS 4.0.x

android {...buildFeatures{viewBinding= true}
}

开启之后,创建xml布局文件时,编译器会自动化生成对应的xxxBinding文件。例如:activity_main.xml 对应生成ActivityMainBinding,下面进行代码演示

一、Activity中使用ViewBinding
1、创建MainActivity、activity_main.xml文件


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><ImageViewandroid:id="@+id/iv_test"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@color/transparent" /><FrameLayoutandroid:id="@+id/fl_contain"android:layout_width="match_parent"android:layout_height="match_parent" /></RelativeLayout>

2、Java中把自动生成的ActivityMainBinding进行填充绑定后再 setContentView(rootView);

        //关键代码:binding xml布局mBinding = ActivityMainBinding.inflate(getLayoutInflater());View rootView = mBinding.getRoot();setContentView(rootView);

3、绑定之后就可以直接通过mBinding.xxx(xxx==id)使用控件,完整代码如下:

public class MainActivity extends AppCompatActivity {private ActivityMainBinding mBinding;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);//关键代码:binding xml布局mBinding = ActivityMainBinding.inflate(getLayoutInflater());View rootView = mBinding.getRoot();setContentView(rootView);//使用介绍mBinding.ivTest.setBackground(ContextCompat.getDrawable(this, R.mipmap.ic_launcher));mBinding.flContain.setOnClickListener(v -> {FragmentManager fragmentManager = getSupportFragmentManager();FragmentTransaction transaction = fragmentManager.beginTransaction();transaction.add(R.id.fl_contain, new BindViewFragment());transaction.commit();});}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/697296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MacOs 围炉夜话

文章目录 一、安装 Mac 一、安装 Mac macOS是一套由苹果开发的运行于Macintosh系列电脑上的操作系统。macOS是首个在商用领域成功的图形用户界面操作系统。 VM虚拟机怎么安装mac os&#xff1f;&#xff08;全教程&#xff09; 虚拟机&#xff1a;VMware Workstation 17 pro W…

新书推荐:《分布式商业生态战略:未来数字商业新逻辑与企业数字化转型新策略》

近两年&#xff0c;商业经济环境的不确定性越来越明显&#xff0c;市场经济受到疫情、技术、政策等多方因素影响越来越难以预测&#xff0c;黑天鹅事件时有发生。在国内外经济方面&#xff0c;国际的地缘政治对商业经济产生着重大的影响&#xff0c;例如供应链中断&#xff0c;…

Shopify配置项过多如何在代码层面简化输出内容

在处理 Shopify 的配置项过多的情况下&#xff0c;可以通过在代码层面简化输出内容来提高效率和可维护性。以下是一些方法&#xff1a; 1. 使用循环和条件语句 使用循环和条件语句来动态生成和输出内容。通过遍历配置项的列表或对象&#xff0c;可以根据条件决定是否输出相应的…

Backend - Django SimpleUI(美化 Django Admin )

目录 一、作用 二、安装 & 配置 &#xff08;一&#xff09;安装依赖 &#xff08;二&#xff09;配置 &#xff08;三&#xff09;运行 三、基础设定 &#xff08;一&#xff09;创建用户 &#xff08;二&#xff09;设置标题 &#xff08;三&#xff09;设置登录…

代理模式笔记

代理模式 代理模式代理模式的应用场景先理解什么是代理&#xff0c;再理解动静态举例举例所用代码 动静态的区别静态代理动态代理 动态代理的优点代理模式与装饰者模式的区别 代理模式 代理模式在设计模式中是7种结构型模式中的一种&#xff0c;而代理模式有分动态代理&#x…

rabbitmq知识梳理

一.WorkQueues模型 Work queues&#xff0c;任务模型。简单来说就是让多个消费者绑定到一个队列&#xff0c;共同消费队列中的消息。 当消息处理比较耗时的时候&#xff0c;可能生产消息的速度会远远大于消息的消费速度。长此以往&#xff0c;消息就会堆积越来越多&#xff0c…

四、矩阵的分类

目录 1、相等矩阵 2、同形矩阵 3、方阵&#xff1a; 4、负矩阵、上三角矩阵、下三角矩阵&#xff1a; 5、对角矩阵&#xff1a;是方阵 ​编辑7、单位矩阵&#xff1a;常常用 E或I 来表示。它是一个方阵 8、零矩阵&#xff1a; 9、对称矩阵&#xff1a;方阵 1、相等矩阵 …

openEuler安装MySQL客户端、openEuler安装MySQL-client、openEuler部署MySQL-client

MySQL客户端下载链接&#xff1a;https://downloads.mysql.com/archives/community/ mysql-community-client-5.7.30-1.el7.x86_64.rpm mysql-community-common-5.7.30-1.el7.x86_64.rpm mysql-community-libs-5.7.30-1.el7.x86_64.rpm 3个必选 8.0.22以上的版本是4个&…

HDFS中常用的Shell命令 全面且详细

HDFS中常用的Shell命令目录 一、ls命令 二、mkdir 命令 三、put命令 四、get命令 五、mv命令 六、rm命令 七、cp命令 八、cat命令 前言 安装好hadoop环境之后&#xff0c;可以执行hdfs相关的shell命令对hdfs文件系统进行操作&#xff0c;比如文件的创建、删除、修改文…

【FPGA】VHDL:小型出勤系统设计

附源代码&#xff0c;一定能实现&#xff01; 目录 EDA设计练习题&#xff1a; 实验要求如下&#xff1a; 思路分析&#xff1a; 代码 99进制计数器 码转换 顶层文件 特别注意 测试 编译通过 结果展示 RTL视图 技术映射视图 软件&#xff1a;Quartus II 13.0 (64…

BERT学习笔记

论文&#xff1a;《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》&#xff0c;2019 代码&#xff1a;[tensorflow]&#xff0c;[pytorch] 来源&#xff1a;李沐精度BERT 0、摘要 与之前模型的区别&#xff1a; GPT考虑的是一个单向…

公司中常用的系统有哪些--制造业篇

摘要 本系列博客主要介绍不同行业中使用的常见系统&#xff0c;本文介绍在制造业或是智能制造方向的常见系统。 智能制造发展史 1973年美国约瑟夫哈林顿&#xff08;Joseph Harrington&#xff09;博士在《Computer Integrated Manufacturing》一书中首次提出 CIM&#xff08…

C# 本地方法和lambda实现

概念&#xff1a; 本地函数是一种嵌套在另一成员中的类型的方法。 仅能从其包含成员中调用它们。 下面是本地方法最简单的一个demo: public static int Show(){int c NewMethod(); return c;static int NewMethod(){#region 测试int a 3;int b 9;int c a b;#endregionre…

python opencv实现车牌识别

目录 一:实现步骤: 二:实现车牌检测 一:实现步骤: 使用Python和OpenCV实现车牌识别的步骤大致可以分为以下两部分: 车牌检测: 读取需要进行车牌识别的图片。 对图像进行灰度化处理,可能还包括高斯模糊和灰度拉伸。 进行开运算,消除图像中的噪声。 将灰度拉伸后的图…

培养纳税筹划思维方式,企业税务筹划实务操作

一、教程描述 本套税务筹划教程&#xff0c;大小447.87M&#xff0c;共有6个文件。 二、教程目录 前言.mp4 培养纳税筹划思维方式.mp4 增值税的税务筹划.mp4 企业所得税的税务筹划.mp4 个人所得税的税务筹划.mp4 企业税务筹划实务操作&#xff08;课件&#xff09;.pdf…

MDST150-16-ASEMI三相可控整流模块MDST150-16

编辑&#xff1a;ll MDST150-16-ASEMI三相可控整流模块MDST150-16 型号&#xff1a;MDST150-16 品牌&#xff1a;ASEMI 正向电流&#xff08;Id&#xff09;&#xff1a;150A 反向耐压&#xff08;VRRM&#xff09;&#xff1a;1600V 正向浪涌电流&#xff1a;1200A 正…

大数据揭秘:Hadoop短视频流量分析实战

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

PyTorch概述(一)---图像变换和增强

TorchVision torchvision 包由流行的数据集、模型架构以及用于计算机视觉的通用图片转换工具组成 TorchVision 包构成 图像变换和增强TVTensors模型和预训练的权重数据集工具操作图像和视频的编/解码用于模型检测的特征提取 图像变换和增强 torchvision支持通用的计算机视…

基于springboot+vue的车辆管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

获取淘宝商品详情API、商品主图、图片搜索api

获取淘宝详情API的方式有以下几种&#xff1a; 使用淘宝开放平台提供的接口&#xff1a;淘宝开放平台提供了多个API接口&#xff0c;让开发者可以通过接口获取商品详情信息。你可以到淘宝开放平台官网申请开发者账号&#xff0c;并查看相关接口文档&#xff0c;了解如何使用接…