
说下遇到的问题:
①在 XML 中使用 PositionLayout 布局增加子组件后,子组件使用 setContentPosition(x,y) 造成定位失败。
②无法父组件无法删除子组件,removeComponent() 无效。
③无法隐藏组件 setVisibility();值是 4 或者 8 都无效。demo 需要删除元素,无奈只能设置元素的 width,height 为 0。
<?xml version="1.0" encoding="utf-8"?><PositionLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:width="match_parent" ohos:height="match_parent" ohos:id="$+id:p"> <Text ohos:id="$+id:fenshu" ohos:text="分数:0" ohos:background_element="#66FF00" ohos:padding="10vp"> </Text></PositionLayout>--------------------------------------------package com.example.tv.slice;import com.example.tv.ResourceTable;import ohos.aafwk.ability.AbilitySlice;import ohos.aafwk.content.Intent;import ohos.agp.animation.Animator;import ohos.agp.animation.AnimatorProperty;import ohos.agp.colors.RgbColor;import ohos.agp.components.*;import ohos.agp.components.element.ShapeElement;import ohos.app.Context;import java.util.Random;import java.util.Timer;import java.util.TimerTask;//1920*1080public class MainAbilitySlice extends AbilitySlice { int count = 0; @Override public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_layout1); System.out.println("MainAbilitySlice>>>>>>>>>>>>>>>>>>>>>>onStart"); Context context = this; PositionLayout positionLayout = (PositionLayout) findComponentById(ResourceTable.Id_p); Text text = (Text) findComponentById(ResourceTable.Id_fenshu); text.setContentPosition(1750, 0); text.setHeight(ComponentContainer.LayoutConfig.MATCH_CONTENT); text.setWidth(ComponentContainer.LayoutConfig.MATCH_CONTENT); Timer timer = new Timer(); timer.scheduleAtFixedRate(new TimerTask() { public void run() { Random random = new Random(); int rFenshu = random.nextInt(100); Button button = new Button(context); button.setWidth(100); button.setHeight(100); button.setText("红包:" + rFenshu); button.setClickedListener((c) -> { button.setWidth(0); button.setHeight(0); count += rFenshu; text.setText("分数:" + count); }); ShapeElement shapeElement = new ShapeElement(); shapeElement.setRgbColor(new RgbColor(255, 0, 0)); button.setBackground(shapeElement); int i1 = random.nextInt(1720); button.setContentPosition(i1, 0); positionLayout.addComponent(button); AnimatorProperty animatorProperty = button.createAnimatorProperty(); animatorProperty.moveToY(700).setDuration(4000); animatorProperty.setStateChangedListener(new Animator.StateChangedListener() { @Override public void onStart(Animator animator) { } @Override public void onStop(Animator animator) { } @Override public void onCancel(Animator animator) { } @Override public void onEnd(Animator animator) { button.setWidth(0); button.setHeight(0); } @Override public void onPause(Animator animator) { } @Override public void onResume(Animator animator) { } }); animatorProperty.start(); } }, 1000,1000); } @Override protected void onActive() { super.onActive(); System.out.println("MainAbilitySlice>>>>>>>>>>>>>>>>>>>>>>onActive"); } @Override protected void onInactive() { super.onInactive(); System.out.println("MainAbilitySlice>>>>>>>>>>>>>>>>>>>>>>onInactive"); } @Override protected void onBackground() { super.onBackground(); System.out.println("MainAbilitySlice>>>>>>>>>>>>>>>>>>>>>>onBackground"); } @Override protected void onForeground(Intent intent) { super.onForeground(intent); System.out.println("MainAbilitySlice>>>>>>>>>>>>>>>>>>>>>>onForeground"); } @Override protected void onStop() { super.onStop(); System.out.println("MainAbilitySlice>>>>>>>>>>>>>>>>>>>>>>onStop"); }}

👇扫码关注 HarmonyOS技术社区👇

专注开源技术,共建鸿蒙生态

点“阅读原文”了解更多
文章转载自51CTO技术栈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




