位置: 编程技术 - 正文

动态设置布局LayoutInflater(动态效果怎么设置)

编辑:rootadmin

推荐整理分享动态设置布局LayoutInflater(动态效果怎么设置),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:动态设定,app动态布局,安卓动态布局,ios 动态布局,动态布局是什么,动态布置设计,app动态布局,动态布局是什么,内容如对您有帮助,希望把文章链接给更多的朋友!

LayoutInflater作用是将layout的xml布局文件实例化为View类对象,LayoutInflater 的作用类&#;于 findViewById(),不同点是LayoutInflater是用来找layout文件夹下的xml布局文件,并且实例化!而 findViewById()是找具体某一个xml下的具体 widget控件(如:Button,TextView等)。

获得 LayoutInflater 实例的三种方式、

1.LayoutInflater inflater = getLayoutInflater(); //调用Activity的getLayoutInflater()2.LayoutInflater inflater = LayoutInflater.from(this);

3.LayoutInflater inflater = (LayoutInflater)Context.getSystemService(LAYOUT_INFLATER_SERVICE);

getLayoutInflater():Activity 的 getLayoutInflater() 方法是调用 PhoneWindow 的getLayoutInflater()方法,看一下该源代码:public PhoneWindow(Context context) { super(context); mLayoutInflater = LayoutInflater.from(context); }可以看出它其实是调用 LayoutInflater.from(context)。LayoutInflater.from(context):public static LayoutInflater from(Context context) { LayoutInflater LayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (LayoutInflater == null) { throw new AssertionError("LayoutInflater not found."); } return LayoutInflater; }可以看出它其实调用 context.getSystemService()。结论:所以这三种方式最终本质是都是调用的Context.getSystemService()。

实例化LayoutInflater之后,就要将layout的xml布局文件实例化为View类对象。1.LayoutInflater inflater = getLayoutInflater(); View view=inflater.inflate(R.layout.ID, null);2.LayoutInflater inflater = LayoutInflater.from(this); View view=inflater.inflate(R.layout.ID, null);3.LayoutInflater inflater = (LayoutInflater)Context.getSystemService(LAYOUT_INFLATER_SERVICE); View view=inflater.inflate(R.layout.ID, null);

inflate 方法通过 sdk 的 api 文档,可以知道该方法有以下几种过载形式,返回&#;均是 View 对象,如下:public View inflate (int resource, ViewGroup root) (常用) inflate()方法一般接收两个参数,第一个参数就是要加载的布局id,第二个参数是指给该布局的外部再嵌套一层父布局,如果不需要就直接传null。这样就成功成功创建了一个布局的实例,之后再将它添加到指定的位置就可以显示出来了。public View inflate (XmlPullParser parser, ViewGroup root) public View inflate (XmlPullParser parser, ViewGroup root, boolean attachToRoot) public View inflate (int resource, ViewGroup root, boolean attachToRoot)LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);View view = inflater.inflate(R.layout.custom, (ViewGroup)findViewById(R.id.test)); //EditText editText = (EditText)findViewById(R.id.content);// error EditText editText = (EditText)view.findViewById(R.id.content);

对于上面代码,指定了第二个参数 ViewGroup root,当然你也可以设置为 null &#;。

Demo:动态设置布局LayoutInflater(动态效果怎么设置)

下面我们就通过一个非常简单的小例子,来更加直观地看一下LayoutInflater的用法。比如说当前有一个项目,其中MainActivity对应的布局文件叫做activity_main.xml,代码如下所示:

1.<LinearLayout xmlns:android=" 6.</LinearLayout>这个布局文件的内容非常简单,只有一个空的LinearLayout,里面什么控件都没有,因此界面上应该不会显示任何东西。

那么接下来我们再定义一个布局文件,给它取名为button_layout.xml,代码如下所示:

1.<Button xmlns:android=" 6.</Button>

这个布局文件也非常简单,只有一个Button按钮而已。

现在我们要想办法,如何通过LayoutInflater来将button_layout这个布局添加到主布局文件的LinearLayout中。根据刚刚介绍的用法,修改MainActivity中的代码,如下所示:

.publicclass MainActivity extendsActivity {. .privateLinearLayout mainLayout;. .@Override.protectedvoid onCreate(Bundle savedInstanceState) {.super.onCreate(savedInstanceState);.setContentView(R.layout.activity_main);.mainLayout = (LinearLayout) findViewById(R.id.main_layout);.LayoutInflater layoutInflater = LayoutInflater.from(this);.View buttonLayout = layoutInflater.inflate(R.layout.button_layout,null);.mainLayout.addView(buttonLayout);.}. .}

可以看到,这里先是获取到了LayoutInflater的实例,然后调用它的inflate()方法来加载button_layout这个布局,最后调用LinearLayout的addView()方法将它添加到LinearLayout中。

现在可以运行一下程序,结果如下图所示:

Button 在界面上显示出来了!说明我们确实是借助LayoutInflater成功将button_layout这个布局添加到LinearLayout中了。 LayoutInflater技术广泛应用于需要动态添加View的时候,比如在ScrollView和ListView中,经常都可以看到 LayoutInflater的身影。

欢迎使用CSDN-markdown编辑器 androidstudio编译报错:Error:(xx,x)Couldnotfindproperty'processResources'oncom.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@xxxxxxx.解决方法:将app下的build.gradle

Android 开源框架 DataDroid Android开源框架DataDroidDataDroid是基于Android平台的一个开源的开发库,基于Android的RESTful封装用来简化Android应用中的数据管理.该开源库的下载地址为CSDN资源

Android ART介绍 1、ART之所以会比Dalvik快,是因为ART执行的是本地机器指令,而Dalvik执行的是Dex字节码,通过通过解释器执行。尽管Dalvik也会对频繁执行的代码进行JIT生

标签: 动态效果怎么设置

本文链接地址:https://www.jiuchutong.com/biancheng/385134.html 转载请保留说明!

上一篇:安卓学习3-布局管理-TableLayout(android布局教程)

下一篇:欢迎使用CSDN-markdown编辑器(欢迎使用来电提醒业务是什么意思)

  • 收到退税款怎么入账
  • 财务软件购买税点多少钱
  • 2020年委托加工的税率是多少
  • 咨询服务业涉及税费
  • 异地预缴的企业所得税可以抵扣吗
  • 营改增利息收入不能抵扣
  • 销售原材料需要交消费税吗
  • 特殊行业包括哪些
  • 哪些单位和个人可构成全宗
  • 会计核算原则主要包括
  • 企业所得税按月还是按季度申报
  • 公司未开展业务就没有债权债务吗
  • 1元换购怎么做账
  • 公司注册的费用记什么科目
  • 融资租赁的服务费的标准
  • 全体员工出去旅游朋友圈怎么发
  • 所有的进项税都在借方吗
  • 上个月开的增值税发票这个月可以作废吗
  • 建筑合同通用条款
  • 消费税有哪几种纳税方式
  • 给员工购买口罩计入什么费用
  • 公司修理电脑属于什么费用
  • 个税按计提申报还是按发放申报
  • 福利费提取后未使用能否税前扣除?
  • 企业拨给工会的补助怎么记账
  • 从租计征的房产税需要缴纳土地使用税吗
  • 公司有好多没有股份的人
  • dhcp的安全防范
  • 增值税明细账怎么登记
  • 资产负债表的编制方法
  • 公司运输车辆加油会计分录
  • 闲置设备怎么处理
  • 收到合同款
  • phpemail正则
  • 未分配利润可留待以后年度进行分配的当年结余利润
  • win 7系统如何备份
  • 鸿蒙系统小艺怎么改声音
  • php字符串赋值
  • 企业销售商品怎么做分录
  • 公司清算的补偿方案是不是应该公布了
  • 代垫运费算收入吗
  • 基于网络创新形成的大数据的最突出特征是什么?( )
  • yii2.0框架
  • 坏账的资产减值损失可以税前扣除吗
  • 公司没有车,加柴油票可以抵扣增值税吗
  • 多交增值税可以做营业外支出吗
  • 个税计税周期 一年
  • 外币财务报表的未分配利润
  • 上个月未开票本月怎么算
  • 用人民币支付的公司
  • 侵权赔偿补偿金如何计算
  • 外包工程会计怎么做账
  • 分期付款购入固定资产该如何做账务处理呢?
  • 收到员工生育津贴怎么做分录
  • 固定资产计提完折旧残值怎么处理
  • 公司采购一直没有发票
  • 子公司注销债务如何处理
  • 服务行业进项税额加计扣除
  • 投资别人的公司叫什么
  • 开票金额和税款的关系
  • 分期付款进项税额怎么算
  • 管理费用属于什么成本
  • 科目余额表上的销项税额贷方余额表示
  • 隐藏在大山深处的罪恶
  • win10选择软件打开方式
  • 清理系统休眠文件
  • 搜索功能使用方法
  • ubuntu20.04 u盘
  • cmos开机密码的清除的二种方法
  • wuloader.exe wuloader进程是什么软件
  • windows server 2012将计算机图标添加到桌面(图文教程)
  • win7双声道
  • centos mail命令
  • shell自定义命令
  • html淘宝搜索框代码
  • js中checked什么意思啊
  • android ui自动化测试
  • 每月个人所得税申报截止时间是几号
  • 湖北省国税务局钟敏副局长
  • 增值税电子普通发票需要盖章吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设