NativeScript 中 CSS 的 flex 布局为什么在 Android 上不生效?

宇文艳清 阅读 41

我在 NativeScript 里用 CSS 写了个简单的 flex 布局,iOS 上显示正常,但在 Android 上完全没按预期排列,子元素堆在一起了。是不是 Android 对 flex 支持有问题?还是我写法不对?

这是我的样式代码:

.container {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  padding: 20;
}
我来解答 赞 7 收藏
二维码
手机扫码查看
2 条解答
UX怡博
UX怡博 Lv1
NativeScript 的 flex 布局在 Android 上不生效,核心问题是你用的可能不是真正的 flex 容器。

在 NativeScript 里,你得用 FlexboxLayout 才能让 flex 属性生效,光写 display: flex 在 Android 上是行不通的。改成这样:

XML 部分:
<FlexboxLayout class="container">
<Label text="左"/>
<Label text="中"/>
<Label text="右"/>
</FlexboxLayout>


CSS 部分你原来的写法没问题,但建议把 padding 加上单位:
.container {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
width: 100%;
padding: 20dp;
}


另外检查一下你的 NativeScript 版本,老版本(6.x 之前)的 flex 支持确实有坑,如果是旧项目的话升级一下通常能解决。

如果你用的是 StackLayoutGridLayout,flex 属性是完全不认的,必须换成 FlexboxLayout。iOS 那边的表现比较宽容,Android 这边比较严格。
点赞
2026-03-18 21:07
Mr.莉娟
Mr.莉娟 Lv1
Android上得加个flex-wrap: nowrap才行,NativeScript这坑踩过。试试这样改:

.container {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
flex-wrap: nowrap;
width: 100%;
padding: 20;
}


妈的又是平台差异,老子当年也在这栽过跟头。
点赞 2
2026-03-09 23:00