2014-01-31 73 views
0

尽我所能,当我将按钮放置在spark数据网格中时,我无法蒙皮点火按钮。我受限于使用光环主题。带有皮肤按钮的Flex DataGrid

我已经在单独的mxml文件中创建了按钮渲染器;我在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> 
+0

那里更确切的错误是什么?大小/位置? –

+0

'当我把按钮放在一个spark数据网格中。我受限于使用光环主题'这不是事实。不过你应该使用[GridItemRenderer](https://flex.apache.org/asdoc/spark/components/gridClasses/GridItemRenderer.html)。 – RIAstar

+0

感谢您的回复。这是使用mx和halo主题创建的大型项目的一小部分;那就是约束进入的地方。慢慢地,我将能够从mx:halo移动到spark:spark,但现在它们必须共存。 itemRenderer是一个错字 - 我现在纠正了。 – FlexDash

回答

0

看来,缩放按钮,网格项目的大小没有大小的圆角半径。

我结束了一个按钮200x200像素的角落半径为6像素;它只是无法看到。我把价值提高到了25,现在我可以看到它