Вопрос
Я испытываю некоторые странности при работе с компонентом сетки в flex, у меня есть следующая форма, которая использует сетку для выравнивания полей, как вы можете видеть, каждая сетка имеет границу.
Моя проблема в том, что граница все еще видна через элементы сетки, которые занимают несколько строк (обратите внимание на текстовую область, которая занимает 4 строки, границы сетки идут вправо от нее!)
Есть идеи, как это исправить?
Решение
Я думаю, проблема в том, что когда Сетка рисуется, она рисует каждую строку сверху вниз, а внутри каждой строки элементы слева направо.Таким образом, элемент, охватывающий ряд <mx:TextArea> , рисуется первым, простираясь вниз в область 2 следующих рядов, которые рисуются после и сверху.
Самый быстрый способ, который я вижу, - вместо этого нарисовать границы строк на <mx:GridItem>s, пропустив левый и правый края в зависимости от размещения элемента в строке.Что - то вроде этого:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Style>
Grid {
background-color: white;
horizontal-gap: 0;
}
GridItem {
padding-top: 5;
padding-left: 5;
padding-right: 5;
padding-bottom: 5;
background-color: #efefef;
border-style: solid;
border-thickness: 1;
border-color: black;
}
.left {
border-sides: top, bottom, left;
}
.right {
border-sides: top, bottom, right;
}
.center {
border-sides: top, bottom;
}
</mx:Style>
<mx:Grid>
<mx:GridRow>
<mx:GridItem styleName="left">
<mx:Label text="Label"/>
</mx:GridItem>
<mx:GridItem styleName="center">
<mx:ComboBox/>
</mx:GridItem>
<mx:GridItem styleName="center">
<mx:Label text="Label"/>
</mx:GridItem>
<mx:GridItem styleName="right">
<mx:ComboBox/>
</mx:GridItem>
</mx:GridRow>
<mx:GridRow>
<mx:GridItem styleName="left">
<mx:Label text="Label"/>
</mx:GridItem>
<mx:GridItem styleName="center">
<mx:TextInput/>
</mx:GridItem>
<mx:GridItem colSpan="2" rowSpan="3">
<mx:VBox width="100%" height="100%">
<mx:Label text="Label"/>
<mx:TextArea width="100%" height="100%"/>
</mx:VBox>
</mx:GridItem>
</mx:GridRow>
<mx:GridRow>
<mx:GridItem styleName="left">
<mx:Label text="Label"/>
</mx:GridItem>
<mx:GridItem styleName="center">
<mx:TextInput/>
</mx:GridItem>
</mx:GridRow>
<mx:GridRow>
<mx:GridItem styleName="left">
<mx:Label text="Label"/>
</mx:GridItem>
<mx:GridItem styleName="center">
<mx:TextInput/>
</mx:GridItem>
</mx:GridRow>
</mx:Grid>
</mx:Application>