HarmonyOS 鸿蒙Next Stack中的控件布局,如何让一个在左上角,一个在右上角
HarmonyOS 鸿蒙Next Stack中的控件布局,如何让一个在左上角,一个在右上角
Stack() {
Image($r(“app.media.img_empty_avatar”))
.width(“13.6%”)
.align(Alignment.TopStart)
Image($r(“app.media.pic_frame_gm”))
.width(“17.333%”)
.align(Alignment.BottomEnd)
}.width(“100%”)
.height(“100%”)
.margin({ bottom: 10 })
Stack中的控件,如何让一个在左上角,一个在右上角。
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
更多关于HarmonyOS 鸿蒙Next Stack中的控件布局,如何让一个在左上角,一个在右上角的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
RelativeContainer的高度可以设置为.height('auto'),根据子组件的高度来决定RelativeContainer的高度,但是属性.height('auto')在RelativeContainer被作为锚点时是不生效的,如果想RelativeContainer的高度自动你可以参考如下代码:
[@Entry](/user/Entry)
struct Page1 {
@State message: string = ‘Hello World’;
build() {
RelativeContainer() {
Row(){}
.id(‘aa’)
Image($r(“app.media.app_icon”))
.id(‘img1’)
.width(“13.6%”)
.align(Alignment.TopStart)
.alignRules({
left:{anchor: “aa”, align: HorizontalAlign.Start}
})
Row(){}.width(‘82.667%’).alignRules({top:{
anchor:‘img1’,align:VerticalAlign.Bottom
}
}).id(‘bb’)
.border({width:1})
Image($r(“app.media.app_icon”))
.width(“17.333%”)
.alignRules({
left:{anchor: “bb”, align: HorizontalAlign.End},
top:{anchor:‘bb’,align:VerticalAlign.Top}
})
}.width(“100%”)
.border({width:1})
.margin({ bottom: 10 })
.height(‘auto’)
}
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
此时的RelativeContainer高度由image撑开
在stack中实现一左一右可参考如下代码:
@Entry
struct Page2 {
@State message: string = ‘Hello World’;
build() {
Stack(){
Row(){
Image($r(“app.media.app_icon”))
.id(‘img1’)
.width(“13.6%”)
Image($r(“app.media.app_icon”))
.width(“17.333%”)
}.width(‘100%’).justifyContent(FlexAlign.SpaceBetween)
}
.width(‘100%’)
}
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
```
在Stack或RelativeContainer中不借助另外的容器组件是无法实现的
你可以使用borderRadius属性来设置圆形图片,示例demo如下:
@Entry
struct Page2 {
@State message: string = ‘Hello World’;
build() {
Column(){
Image($r(“app.media.app_icon”))
.id(‘img1’)
.width(100)
.height(100)
.borderRadius(50)
}
.width(‘100%’)
}
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
更多关于HarmonyOS 鸿蒙Next Stack中的控件布局,如何让一个在左上角,一个在右上角的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next Stack中,控件布局可以通过使用布局容器(如DirectionalLayout或AbsoluteLayout)来实现精确的位置控制。
若要将一个控件放置在左上角,另一个放置在右上角,可以使用DirectionalLayout结合布局参数来实现。DirectionalLayout支持设置控件的对齐方式,但直接实现左上角和右上角布局可能需要结合权重(weight)或AbsoluteLayout。
使用DirectionalLayout(假设水平方向为主轴)时,可以为第一个控件设置alignment="start"
和weight="0"
(或者不使用weight),并确保其宽度合适(例如width="match_parent"
的一部分或固定值)。对于第二个控件,可以使用alignment="end"
,并同样设置weight="0"
,确保其宽度也合适。不过,DirectionalLayout本身不支持直接实现绝对定位。
更简单的做法是使用AbsoluteLayout,通过直接设置控件的left
、top
、right
和bottom
属性来实现精确定位。例如,将第一个控件的left
和top
属性设置为"0dp"(或"0px",根据系统单位),将第二个控件的right
和top
属性设置为"0dp"(或相应的父容器边界值)。
示例代码(假设使用XML布局):
<AbsoluteLayout>
<Button left="0dp" top="0dp" /> <!-- 左上角 -->
<Button right="0dp" top="0dp" /> <!-- 右上角 -->
</AbsoluteLayout>
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html