HarmonyOS 鸿蒙Next 如何实现让里层view的宽度等于外层view的宽度

发布于 1周前 作者 yuanlaile 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 如何实现让里层view的宽度等于外层view的宽度

build() {
NavDestination() {
RelativeContainer() {
Column() { /// 1号
Column() { /// 2号
Divider()
.height(8)
.backgroundColor($r(“app.color.colorPrimary”))
.position({
start: LengthMetrics.px(0),
end: LengthMetrics.px(0),
bottom: LengthMetrics.px(0)
})
Text(“登录”)
.textAlign(TextAlign.Center)
.fontColor("#333")
.fontSize(30)
.fontWeight(FontWeight.Bold)
}
.width(“auto”)
.justifyContent(FlexAlign.End)
.alignItems(HorizontalAlign.Start)
.margin({
top: 80,
left: 10
})

}
.alignItems(HorizontalAlign.Start)
.backgroundColor($r(‘app.color.white’))
.width(‘100%’)
.height(‘100%’)
.padding({
left: ‘35’,
right: ‘25’
})
}
.padding({ top: AppStorage.get<number>(‘statusBarHeight’) })
}
.hideTitleBar(true)

}

我希望实现的效果是,Divider的宽度始终等于Text(“登录”)的宽度

1 回复

在HarmonyOS鸿蒙Next系统中,若要实现里层View的宽度等于外层View的宽度,可以通过布局文件或编程代码来实现。以下是两种常见的方法:

方法一:使用布局文件

在XML布局文件中,可以使用match_parent属性。假设外层View是一个DirectionalLayout,里层View可以是其子View,设置里层View的width属性为match_parent即可。

<DirectionalLayout
    width="match_parent"
    height="wrap_content">
    <Component
        width="match_parent"  <!-- 里层View宽度等于外层View -->
        height="wrap_content"
        ... />
</DirectionalLayout>

方法二:编程代码设置

在Java或Kotlin代码中,可以通过获取外层View的宽度,然后设置给里层View。这通常需要在View的onWindowFocusChangedonLayout方法中执行,确保View已经测量完毕。

outerView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        int outerWidth = outerView.getWidth();
        innerView.setLayoutParams(new Component.LayoutParams(outerWidth, Component.LayoutParams.WRAP_CONTENT));
    }
});

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部