1

I am writing a custom component in HarmonyOS using Java SDK. In order to negotiate the width and height of the custom view in Android, we override onMeasure().

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {}

What is the alternative for the above in HarmonyOS?

zhangxaochen
  • 32,744
  • 15
  • 77
  • 108

1 Answers1

1

In Android - onMeasure() is a protected method available in View class so one can directly override it in custom component by extending the View class.

For alternative in HarmonyOS - you will have to implement Component.EstimateSizeListener in your custom component and then write down the implementation in overriden function onEstimateSize.

So in Android, when you have some code like this -

public class CustomView extends View {

   public CustomView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
   }

   @Override
   protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
   }
}

Harmony Code changes will be -

public class CustomComponent implements ComponentContainer.EstimateSizeListener

public CustomComponent(Context context, AttrSet attrSet, String styleName) {
       super(context, attrSet, styleName);
       setEstimateSizeListener(this); //set the listener here
   }

   @Override
   public boolean onEstimateSize(int widthEstimatedConfig, int heightEstimatedConfig) {
   }
}
Kanak Sony
  • 1,570
  • 1
  • 21
  • 37