HarmonyOS鸿蒙Next中Stack组件整体设置了子组件对齐方式,想单独配置其中某个子组件的对齐方式不生效

HarmonyOS鸿蒙Next中Stack组件整体设置了子组件对齐方式,想单独配置其中某个子组件的对齐方式不生效

Stack({ alignContent: Alignment.Bottom }) { Video({ src: “”, controller: this.controller, currentProgressRate: this.curSpeet }) ProgressView({ progressValue: this.progressValue, duration: this.duration, seekPos: this.progressPosition }).align(Alignment.Bottom)//为啥不生效 .width(‘100%’) }

tack组件整体设置了子组件对齐方式居中,想单独配置其中某个子组件ProgressView的对齐方式为底部居中, 但是不生效,哪位大佬帮忙看下


更多关于HarmonyOS鸿蒙Next中Stack组件整体设置了子组件对齐方式,想单独配置其中某个子组件的对齐方式不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

参考: A、B两个子组件分别用一个容器包住,容器大小设置成跟stack一样,通过设置各自容器的布局方式来达到A居中,B组件靠右居中 示意代码:

Stack() {
  Row() {
    //组件A
  }.justifyContent(FlexAlign.Center).width('100%').height('100%')

  Row() {
    //组件B
  }.justifyContent(FlexAlign.End).width('100%').height('100%')
}

更多关于HarmonyOS鸿蒙Next中Stack组件整体设置了子组件对齐方式,想单独配置其中某个子组件的对齐方式不生效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


这做法简直垃圾,鸿蒙这都不支持吗?无缘无故多一层组件嵌套,

同感,当我看到使用script语言的时候,我就觉得整套ui应该就是基于web的方式实现的,太难用了,

要实现也简单,但是需要计算;

比如高度是100,宽度是自适应,外层设置全部居上,第二个子组件居上了,第三个我需要在底下,只需要高度减去自身的高度,设置成上边距,就可以实现了!

Stack({alignContent:Alignment.Top}){
  Swiper(){
    Image(Constants.IMAGE_URL +'detailsimg1.jpg').width('100%');
    Image(Constants.IMAGE_URL +'detailsimg2.jpg').width('100%');
    Image(Constants.IMAGE_URL +'detailsimg3.jpg').width('100%');
  }.width(Constants.FULL_PERCENT).loop(true).indicator(Indicator.dot().right(0).bottom(this.isActivity ? 35 : 0).itemWidth(15).itemHeight(4).selectedItemWidth(15).selectedItemHeight(4).color(Color.White).selectedColor($r('app.color.app_main_color')));

  Column(){
    Row(){}.width(Constants.FULL_PERCENT).height(Constants.LENGTH_40);
    Row(){
      Image($r('app.media.backwt')).width(Constants.LENGTH_30).height(Constants.LENGTH_30).padding({left:6, right:8, top:6, bottom:6}).backgroundColor('#99000000').border({radius: '50%'}).onClick(() => {
        router.back();
      });
    }.width(Constants.CONTENT_WIDTH).height(Constants.LENGTH_30);
  }.width(Constants.FULL_PERCENT).height(Constants.LENGTH_70);

  if(this.isActivity){
    Row(){
      Image(Constants.IMAGE_URL + this.activityBack).objectFit(ImageFit.Auto);
    }.width(Constants.FULL_PERCENT).height(Constants.LENGTH_40).margin({top:px2vp(this.windowWidth) - 40});
  }

}.width(Constants.FULL_PERCENT).height(px2vp(this.windowWidth));

我也碰到了,这么简单的功能还有bug,真是垃圾啊

在HarmonyOS鸿蒙Next中,Stack组件默认使用alignContent属性来设置所有子组件的对齐方式。如果你为Stack整体设置了子组件对齐方式,但想单独为某个子组件配置不同的对齐方式,可以通过align属性来实现。align属性可以单独应用于子组件,覆盖Stack的全局对齐设置。

例如,如果你为Stack设置了alignContent: Alignment.Center,但希望某个子组件使用Alignment.TopStart对齐,可以在该子组件上设置align: Alignment.TopStart。如果单独配置的对齐方式不生效,可能是因为该子组件的布局约束或其他样式属性影响了对齐行为。

确保子组件的align属性正确设置,并且没有其他布局属性(如widthheightmargin等)干扰对齐效果。如果问题仍然存在,检查子组件的父容器或上级布局是否有额外的约束或样式覆盖了align属性。

在HarmonyOS鸿蒙Next中,Stack组件默认情况下,子组件的对齐方式会遵循父容器的对齐设置。如果尝试单独配置某个子组件的对齐方式不生效,可能是因为Stack的对齐方式优先级高于子组件的单独设置。你可以尝试以下解决方案:

  1. 使用Align组件:将需要单独对齐的子组件包裹在Align组件中,通过Alignalignment属性来设置该子组件的对齐方式。

  2. 调整布局结构:如果需要更灵活的对齐方式,考虑使用FlexColumnRow等布局组件,它们提供了更细粒度的对齐控制。

通过这些方法,你可以实现对特定子组件的独立对齐设置。

回到顶部