同样的设置页,为什么别人的就是比你高级
你有没有对比过两个设置页:内容一模一样,都是几行开关,但别人的看起来清爽、专业,你的却显得拥挤、廉价。差距往往不在大组件,而在两个最不起眼的小东西上:开关有没有自动顶到最右边,分组之间有没有一条干净的分隔线。
在华为鸿蒙系统的 ArkUI 框架里,这两件事分别由 Blank 和 Divider 负责。今天用华为仓颉编程语言把它们讲清楚。你会发现,页面质感的提升,常常就藏在这种小组件里。
Blank:让开关自动顶到最右边
先看第一个常见困扰。一个设置项,左边是文字“蓝牙”,右边是一个开关。你用横排把它们放进去,结果文字和开关黏在一起,挤在左边。你想让开关贴到最右边,于是开始敲空格、塞空白块,调来调去还是对不准。
Blank 就是为这个场景生的。它是一个空白填充组件,放在两个子组件中间,能自动把剩余空间吃掉,把两边的内容撑到两头:
Row() { Text("蓝牙").fontSize(18) Blank() Toggle(ToggleType.Switch) } .width(100.percent) .padding(left: 12)
文字自动靠左,开关自动靠右,中间的空白由 Blank 自己撑满。你一个像素都不用算,加一行 Blank 就完事了。

Blank 的关键前提:只在这三种容器里生效
这里有个必须知道的前提,否则你会发现 Blank 没反应。
Blank 的自动填充能力,只在父容器是 Row、Column 或 Flex 时才生效。因为它填充的是容器主轴方向的空余空间,离开了这三种带主轴的容器,它就不知道该往哪个方向撑了。
还有一个细节:Blank 是有弹性的,容器主轴没设固定大小时它会自动拉伸或压缩。如果你希望它至少留出一段空间,可以用 `min` 参数给它一个最小值:
Row() { Text("蓝牙").fontSize(18) Blank(min: 160.vp) Toggle(ToggleType.Switch) }
这样不管容器怎么变,中间至少空出 160。它和实际大小的关系是取两者里的较大值,所以叫最小填充。

Divider:一条线划清内容的边界
解决了间距,再看分组。一个长页面,几组设置堆在一起,没有任何分隔,看起来就是一团。这时候你需要 Divider,一个专门画分隔线的组件。
它的用法极简,本身不包含任何子组件,放下去就是一条线:
Column() { Text("账号设置") Divider() Text("通用设置") Divider() Text("关于") }
每两组内容之间插一条 Divider,页面的层次一下就出来了。分隔线不是装饰,它在帮用户的眼睛划清“这是一组、那是另一组”的边界。
把 Divider 调得更精致:颜色、粗细、方向
默认的 Divider 已经够用,但要做出高级感,还得会调它的几个属性。
`color` 设置线的颜色,默认是一个很浅的半透明灰,想更明显或更柔和都可以改。`strokeWidth` 设置线的粗细,默认是 1 像素。
这里有个很实用的经验:部分设备上 1 像素的线取整后可能不显示,所以官方建议用 2 像素,稳妥又清晰:
Divider() .color(0xEEEEEE) .strokeWidth(2)
还有 `vertical` 属性,设为 true 就把横线变成竖线。竖向分隔线适合放在横排的两个按钮之间,比如底部操作栏的“取消”和“确定”中间,加一条竖线,分隔感立刻就专业了。`lineCap` 则用来控制线两端的样式,做圆头线时会用到。

两个小组件配合,朴素列表秒变精致
真正出效果的,是把 Blank 和 Divider 用在一起。
设想一个常见的设置列表:每一行用 Blank 把标题和右侧的开关或箭头推到两端,行与行之间用 Divider 分隔。一个原本朴素的列表,瞬间就有了主流 App 的精致感:
Column() { Row() { Text("消息通知") Blank() Toggle(ToggleType.Switch) }.padding(12) Divider().color(0xEEEEEE).strokeWidth(2) Row() { Text("夜间模式") Blank() Toggle(ToggleType.Switch) }.padding(12) }
Blank 负责每行的横向布局,Divider 负责行间的视觉切分。两个加起来不到几行代码,质感却是天壤之别。

小结:高级感是细节堆出来的
回头看,Blank 和 Divider 都是功能极简的小组件,一个填空白、一个画线,单独看平平无奇。但页面的高级感,恰恰是这种细节堆出来的。
记住两句话就够用了:需要把内容推到两端、又不想算宽度时,用 Blank;需要给内容分组、划清边界时,用 Divider,并且记得把线宽设成 2 像素。把这些小组件用顺手,你的页面会比同样内容的页面高级一大截。

夜雨聆风