Попытайтесь, как я могу, я не могу обрезать искровую кнопку, когда я помещаю кнопку в искровом dataGrid. Я вынужден использовать тему гало.Flex DataGrid с кнопкой с кожей
Я создал кнопку рендеринга кнопок в отдельном файле mxml; У меня есть отдельные кнопки за пределами dataGrid, которые показывают кожу правильно, поэтому я уверен, что нет ничего плохого в коже. Все дело в том, чтобы использовать ту же самую оболочку внутри dataGrid, что и снаружи
Следующий код показывает то же поведение, что и я; в этом случае рендеринг создается в строке. Кажется, что skinClass не соблюдается. Или есть другой способ сделать это.
<s:DataGrid id="dg" width="500" dataProvider="{employees2}">
<s:columns>
<s:ArrayList>
<s:GridColumn dataField="name" headerText="Name">
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer>
<s:Button label="Press Me"
top="0" bottom="0" left="0" right="0"
skinClass="MyButtonSkin" />
</s:GridItemRenderer>
</fx:Component>
</s:itemRenderer>
</GridColumn>
</s:ArrayList>
</s:columns>
</s:DataGrid>
В файл MyButtonSkin.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:SparkButtonSkin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:fb="http://ns.adobe.com/flashbuilder/2009"
minWidth="21" minHeight="21"
alpha.disabled="0.5">
<fx:Metadata>
<![CDATA[
/**
* @copy spark.skins.spark.ApplicationSkin#hostComponent
*/
[HostComponent("spark.components.Button")]
]]>
</fx:Metadata>
<fx:Script fb:purpose="styling">
<![CDATA[
/* Define the skin elements that should not be colorized.
For button, the graphics are colorized but the label is not. */
static private const exclusions:Array = ["labelDisplay"];
/**
* @private
*/
override public function get colorizeExclusions():Array {return exclusions;}
/**
* @private
*/
override protected function initializationComplete():void
{
useChromeColor = true;
super.initializationComplete();
}
]]>
</fx:Script>
<!-- states -->
<s:states>
<s:State name="up" />
<s:State name="over" />
<s:State name="down" />
<s:State name="disabled" />
</s:states>
<!-- layer 2: fill -->
<!--- @private -->
<s:Rect id="fill" left="1" right="1" top="1" bottom="1" radiusX="10">
<s:fill>
<s:LinearGradient rotation="90">
<s:GradientEntry color="0xFAFAFA"
color.over="0xBBBDBD"
color.down="0xAAAAAA"
alpha="0.85" />
<s:GradientEntry color="0x808080"
color.over="0x9FA0A1"
color.down="0x929496"
alpha="0.85" />
</s:LinearGradient>
</s:fill>
</s:Rect>
<!-- layer 8: text -->
<!--- @copy spark.components.supportClasses.ButtonBase#labelDisplay -->
<s:Label id="labelDisplay"
textAlign="center"
maxDisplayedLines="1"
horizontalCenter="0" verticalCenter="1" verticalAlign="middle">
</s:Label>
</s:SparkButtonSkin>
Что конкретно не так? размер/положение? –
'когда я помещаю кнопку в искровом dataGrid. Я вынужден использовать тему гало «Это неправда. Вероятно, вы должны использовать [GridItemRenderer] (https://flex.apache.org/asdoc/spark/components/gridClasses/GridItemRenderer.html). – RIAstar
Спасибо за ваши ответы. Это небольшая часть большого проекта, который был создан с использованием mx и темы halo; вот где возникает ограничение. Медленно я смогу перейти от mx: halo к искру: искра, но пока они должны сосуществовать. И itemRenderer был опечаткой, которую я сейчас исправил. – FlexDash