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 列中。
在 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 列中。