关于鸿蒙自定义控件不显示问题记录怎么回事?
最近在开发鸿蒙版的App,在自定义View的开发中遇到了一个布局不显示的问题,特此记录一下。
当自定义View的时候官方示例代码如下:
public class CustomComponent extends Component{
public CustomComponent(Context context) {
this(context, null);
}
//如需支持xml创建自定义组件,必须添加该构造方法
public CustomComponent(Context context, AttrSet attrSet) {
super(context, attrSet);
// 设置测量组件的侦听器
setEstimateSizeListener(this);
}
}
我在使用的时候发现在构造方法中 添加 setEstimateSizeListener(this);代码之后会导致预览或者运行之后都没有显示出来我想要的这个View。
说明:我这边继承自DirectionalLayout。
代码效果如下
public GzLayout(Context context, AttrSet attrSet) {
super(context, attrSet);
// 设置测量组件的侦听器
setEstimateSizeListener(this);
init(context,attrSet);
}
注释掉代码效果如下
public GzLayout(Context context, AttrSet attrSet) {
super(context, attrSet);
// 设置测量组件的侦听器
// setEstimateSizeListener(this);
init(context,attrSet);
}
目前还不清楚具体不显示的原因,希望有大佬看见了给个回复。
CustomComponent类是否实现了Component.EstimateSizeListener接口,可以参考如下文档:
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ui-java-custom-components-0000001139369661