鸿蒙之ViewStub--ComponentHolder的使用

1 篇文章 0 订阅
1 篇文章 0 订阅

初次体验HarmonyOS,里边也有Android中相对应的各种Component,开发过程中Layout布局优化,减少层级等,一般会用到include、marge、ViewStub等标签,是比较方便的。

随着开发的深入,HarmonyOS也提供了对应的标签:include、ComponentHolder。其中ComponentHolder功能和Android中ViewStub的功能类似,但ViewStub继承与View,本身就是个View,而ComponentHolder没有继承与Component,其内部处理稍有区别。

ComponentHolder提供的两个公共方法:

show() 与ViewStub中inflate()方法功能类似,但show()可多次进行调用,其调用必须和hide()方法成对出现,否则将会抛出:IllegalArgumentException("Invalid index supplied to " + component)异常。内部实现主要将标签中的layout Component添加进父容器中。
hide() 可多次调用,内部实现主要将标签中的layout Component从父容器中移除。之所以可以多次调用,其方法中做了try{}catch(){}处理而已。

使用方法:

布局中使用:

<ComponentHolder
        ohos:id="$+id:component_holder"
        ohos:layout="$layout:test_layout"
        ohos:height="match_content"
        ohos:width="match_content"
        />

由于设计原因,ComponentHolder标签外部可使用一个ComponentContainer包一层,可减少崩溃的发生。

ComponentHolder componentHolder = directionalLayout.findComponentHolderById(ResourceTable.Id_component_holder);

componentHolder.show();

componentHolder.hide();

show() 和 hide()标签需要成对出现才可多次show。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值