GridLayout中的Nativescript垂直对齐无法正常工作

ans*_*777 6 css mobile android nativescript

在nativescript中,StackLayout存在GridLayout中的一些问题.我无法在StackLayout中心垂直对齐Label.

这是我想要实现的图片:

在此输入图像描述

在这里你可以看到,我想要垂直感叹号图标中心.

但不幸的是我一直这样:

在此输入图像描述

这是我使用的代码:

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>
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)

如何修复图标居中?我做错了什么?非常感谢你!

Nat*_*ael 10

在此输入图像描述

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

<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>
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)

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

诀窍是使用Label不打印任何文本的背景的法线(使用.iconbkg类); 然后集中你的!在Label数据网格的第0列中的另外两个中.