The textarea's coordinates change spontaneously

initial
after

Description

The screen resolution is 320*240。reduce the height of the container,it become scrollable, and then restore,and then Drag it back to its normal position ,It’s children‘s
relative coordinates have changed。

What LVGL version are you using?

v8

What do you want to achieve?

let the textarea’s relative coordinates does not change

Code

lv_obj_t *memu;

lv_obj_t * main_cont;

static void ta_event_cb(lv_event_t * e)
{
lv_event_code_t code = lv_event_get_code(e);
lv_obj_t * ta = lv_event_get_target(e);
lv_obj_t * kb = lv_event_get_user_data(e);
if(code == LV_EVENT_FOCUSED) {
if(lv_indev_get_type(lv_indev_get_act()) != LV_INDEV_TYPE_KEYPAD) {
lv_keyboard_set_textarea(kb, ta);
lv_obj_set_style_max_height(kb, LV_HOR_RES * 2 / 3, 0);
lv_obj_update_layout(memu); /Be sure the sizes are recalculated/
lv_obj_set_height(memu, LV_VER_RES - lv_obj_get_height(kb));
lv_obj_clear_flag(kb, LV_OBJ_FLAG_HIDDEN);
lv_obj_scroll_to_view_recursive(ta, LV_ANIM_OFF);
}
}
else if(code == LV_EVENT_DEFOCUSED) {
lv_keyboard_set_textarea(kb, NULL);
lv_obj_set_height(memu, LV_VER_RES);
lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
lv_indev_reset(NULL, ta);

}
else if(code == LV_EVENT_READY || code == LV_EVENT_CANCEL) {
    lv_obj_set_height(memu, LV_VER_RES);
    lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
    lv_obj_clear_state(ta, LV_STATE_FOCUSED);
    lv_indev_reset(NULL, ta);   /*To forget the last clicked object to make it focusable again*/
}

}

lv_obj_t* my_test(void)
{
memu = lv_obj_create(lv_scr_act());
lv_obj_remove_style_all(memu);
lv_obj_set_size(memu, lv_pct(100), LV_PCT(100));
//lv_obj_set_flex_grow(memu, 1);
lv_obj_set_flex_flow(memu, LV_FLEX_FLOW_COLUMN);
lv_obj_add_flag(memu, LV_OBJ_FLAG_EVENT_BUBBLE);
lv_obj_clear_flag(memu, LV_OBJ_FLAG_CLICKABLE);

lv_obj_t * main_header = lv_obj_create(memu);
lv_obj_set_size(main_header, LV_PCT(100), LV_SIZE_CONTENT);
lv_obj_set_flex_flow(main_header, LV_FLEX_FLOW_ROW);
lv_obj_set_flex_align(main_header, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
lv_obj_clear_flag(main_header, LV_OBJ_FLAG_CLICKABLE);
lv_obj_add_flag(main_header, LV_OBJ_FLAG_EVENT_BUBBLE);

main_cont = lv_obj_create(memu);
lv_obj_set_size(main_cont, LV_PCT(100), LV_SIZE_CONTENT);
lv_obj_set_flex_flow(main_cont, LV_FLEX_FLOW_COLUMN);
lv_obj_set_flex_grow(main_cont, 1);
lv_obj_set_flex_align(main_cont, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START);
//lv_obj_clear_flag(main_cont, LV_OBJ_FLAG_CLICKABLE);
lv_obj_add_flag(main_cont, LV_OBJ_FLAG_EVENT_BUBBLE);

lv_obj_t * main_botton = lv_obj_create(memu);
lv_obj_set_size(main_botton, LV_PCT(100), LV_SIZE_CONTENT);
lv_obj_set_flex_flow(main_botton, LV_FLEX_FLOW_ROW);
lv_obj_set_flex_align(main_botton, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
lv_obj_clear_flag(main_botton, LV_OBJ_FLAG_CLICKABLE);
lv_obj_add_flag(main_botton, LV_OBJ_FLAG_EVENT_BUBBLE);

lv_obj_t * kb = lv_keyboard_create(lv_scr_act());
lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);

lv_obj_t * password = lv_textarea_create(main_cont);
lv_textarea_set_one_line(password, true);
lv_textarea_set_password_mode(password, true);
lv_textarea_set_placeholder_text(password, "Min. 8 chars.");
lv_obj_add_event_cb(password, ta_event_cb, LV_EVENT_ALL, kb);

password = lv_textarea_create(main_cont);
lv_textarea_set_one_line(password, true);
lv_textarea_set_password_mode(password, true);
lv_textarea_set_placeholder_text(password, "Min. 8 chars.");
lv_obj_add_event_cb(password, ta_event_cb, LV_EVENT_ALL, kb);

}