[Xuni:FlexGrid][Android] CellFactory機能を利用して各セルの背景色を変更できない

文書番号 : 81880     文書種別 : 不具合     登録日 : 2016/11/22     最終更新日 : 2017/01/24
文書を印刷する
対象製品
Xuni
発生環境
本現象は、Androidで発生します。
状況
修正済み
詳細
CellFactoryクラスから継承したクラスを作成し、createCellContentメソッド内で、renderEngine のsetFillColorメソッドを実行した場合、文字列の色が変更されセルの色が変更されない。

サンプルコード
Java

public override void CreateCellContent(GridPanel gridPanel,
     FlexGridCanvasRenderEngine renderEngine, GridCellRange cellRange, Rect bounds)
{
  if (gridPanel.CellType == GridCellType.Cell)
  {
    GridColumn column = gridPanel.Columns.Get(cellRange.Col).JavaCast();

    if (column != null && column.Name == "Order Count") {
      GridRow row = (GridRow)gridPanel.Rows.Get(cellRange.Row).JavaCast();
      Customer _customer = (Customer)row.DataItem;
      if (_customer.OrderCount >= 50)
      {
        // テキスト色をGreenに変更する
        renderEngine.SetFillColor(Color.Green);
      }
      else
      {
        // テキスト色をRedに変更する
        renderEngine.SetFillColor(Color.Red);
      }
    }
  }
  base.CreateCellContent(gridPanel, renderEngine, cellRange, bounds);
}



回避方法
※追記(2017年1月24日)
この問題はバージョン2016J v3(4.0.20163.31)で修正されました。
最新版をダウンロードしてご利用ください。

また、以下に解説する方法で背景色を変更する必要があります。

背景色の設定方法


CellFactory機能を利用して、セル内の文字色、背景色を変更する場合は、SetFillColorメソッドを利用してそれぞれ色を設定します。
規定では文字色の色指定なので、セルの背景色を描画するには別途drawRectメソッドを利用して、塗りつぶす必要があります。

サンプルコード
Java

  // 塗りつぶし色をREDに変更する(背景色用)
  renderEngine.SetFillColor(Color.Green);
  // 設定した色でセルの四角形領域を描画する
  flexGrid.renderEngine.drawRect(bounds.left,bounds.top,bounds.width(),bounds.height(), Paint.Style.FILL);
  // 塗りつぶし色をGREENに変更する(テキスト色用)
  renderEngine.SetFillColor(Color.Green);