layoutweight(1)不能优先展示指定的组件 ?

1、希望在副标题超长的情况下,主标题‘正文列表’优先展示显示,副标题结尾是省略号,现在给主标题设置layoutweight(1)不能达到预期
2、代码倒数第五行组件偏移设置为 margin后,副标题组件超出屏幕被截断,此处怎么理解
3、假如设置width(‘90%’),里面的90%是屏幕的90%还是父容器的90%

@Entry 
@Component 
struct Index { 
  private hasMore: Boolean = true; 
 
  build() { 
    Row() { 
      Row({ space: 8 }) { 
 
        Text('正文列表') 
          .maxLines(1) 
          .fontColor(Color.Black) 
          .fontSize(17) 
          .fontWeight(FontWeight.Bold) 
          .textOverflow({ overflow: TextOverflow.Ellipsis }) 
          .layoutWeight(1) 
 
        Row() { 
          Text('正文列表正文列表正文列表正文列表正文列表') 
            .maxLines(1) 
            .fontColor(Color.Gray) 
            .textOverflow({ overflow: TextOverflow.Ellipsis }) 
            .fontSize(12) 
            .textAlign(TextAlign.End) 
          if (this.hasMore) { 
            Image($r('app.media.vod_media_right_more')) 
              .objectFit(ImageFit.Contain) 
              .size({ width: '15vp', height: '15vp' }) 
              .opacity(0.3) 
          } 
        } 
        .justifyContent(FlexAlign.End) 
      } 
 
      .width('100%') 
      .height(40) 
      .padding({ top: 8, left: 15, right: 15 }) 
    } 
 
    .height('100%') 
  } 
}
阅读 462
avatarAI BotBETA

1、关于设置layoutweight(1)不能达到预期的问题,原因在于组件的布局权重值在水平布局中决定其在水平方向上所占的比例,而在垂直布局中决定其在垂直方向上所占的比例。因此,当你在水平布局中设置一个组件的layoutweight为1时,这个组件并不会优先展示显示,而是会占据布局容器的1/2空间,如果布局容器有足够的空间,两个组件会平均分配空间。

2、代码倒数第五行组件偏移设置为 margin 后,副标题组件超出屏幕被截断,这是因为在设置组件的 margin 后,组件的位置会发生偏移,如果偏移量过大,副标题组件可能会超出屏幕的范围,导致被截断。

3、关于设置 width('90%') 中的 90% 是屏幕的 90% 还是父容器的 90% 的问题,这取决于你在哪里使用这个值。如果是在根布局中设置,那么这个值就是相对于屏幕的 90%;如果是在某个具体的组件中设置,那么这个值就是相对于该组件的父容器的 90%。

1 个回答

问题1:layoutWeight是占满剩下的空间,所以想达到效果是给正标题设置固定大小,副标题设置layoutWeight。
问题2:在弹性布局里面width(“100%”)一般不会与margin一起设置,这两个属性会有冲突。
问题3:以父容器大小为准。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进