GridLayout 中的 Nativescript 垂直对齐不起作用

Nativescript vertical alignment in GridLayout not working

在 nativescript 中,我对 GridLayout 中的 StackLayout 有一些问题。我无法在 StackLayout 中心垂直对齐标签。

这是我想要实现的图片:

在这里你可以看到,我想让感叹号图标垂直居中。

但不幸的是我一直收到这个:

这是我使用的代码:

tns.html

<GridLayout class="formMessage warning" columns="auto,*" rows="auto">
  <StackLayout col="0" class="formMessageIcon">
    <Label class="icon fa" [text]="'fa-exclamation-circle' | fonticon"></Label>
  </StackLayout>
  <Label col="1" class="formMessageText" text="lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet" textWrap="true"></Label>
</GridLayout>

CSS

.formMessage {
  width: 100%;
  border-width: 2;
  border-color: #ff344e;
}

.formMessageIcon {
  background-color: #ff344e;
  width: 30;
}

.icon {
  vertical-align: center;
  text-align: center;
  margin-right: 2;
  font-size: 18;
  color: #2b3535;
}

.formMessageText {
  padding: 5 8;
  color: #ff344e;
}

如何解决图标居中问题?我做错了什么?非常感谢!

以下是我将如何更改它以使其工作..

<GridLayout class="formMessage warning" columns="auto,*" rows="auto">
    <Label col="0" class="iconbkg" text=""></Label>
    <Label col="0" class="icon fa" [text]="'fa-exclamation-circle' | fonticon"></Label>
    <Label col="1" class="formMessageText" text="lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet" textWrap="true"></Label>
</GridLayout>

而 CSS 是:

.formMessage {
    width: 100%;
    border-width: 2;
    border-color: #ff344e;
}

.iconbkg {
    width: 30;
    background-color: red;
    margin-right: 2;
}

.icon {
    width: 30;
    vertical-align: center;
    text-align: center;
    margin-right: 2;
    font-size: 18;
    color: #2b3535;
}

.formMessageText {
    padding: 5 8;
    color: #ff344e;
}

这种布局的优点是它实际上比使用 StackLayout 占用更少的资源;并简化您的处理过程。

诀窍是为不打印任何文本的背景使用普通 Label(使用 .iconbkg class);然后居中你的!在另一个 Label 中,它们都在数据网格的第 0 列中。