これが私の元のコードですCellRenderer
:
package
{
import fl.controls.listClasses.CellRenderer;
import fl.controls.listClasses.ICellRenderer;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
public class RightAlignCell extends CellRenderer implements ICellRenderer
{
private var tf:TextFormat;
public function RightAlignCell()
{
tf = new TextFormat();
tf.align = TextFormatAlign.RIGHT;
}
override protected function drawLayout():void
{
textField.setTextFormat(tf);
super.drawLayout();
}
}
}
ただし、 の値を変更しtextField.x
ても効果はありませんでした。super.drawLayout()
これは、オーバーライドされたバージョンの最後で呼び出していたためだと考えました。これにより、値がデフォルトに戻ったようです。最初に呼び出した場合、動作を変更しx
ました (ここでは顕著な例として -50 を使用しています)。
override protected function drawLayout():void
{
super.drawLayout();
textField.setTextFormat(tf);
textField.x = -50;
}
ただし、値を に設定しようとすると、Gio が提案したように、望ましい結果が得られるはずですが、 5 ピクセルthis.width - textField.width
しか増加しませんでした。x
問題はsuper.drawLayout()
. の幅を列の内側に収まるようにサイズ変更していたtextField
ようです。そのため、計算が機能しませんでした。関数を削除しようとしましたが、列を適切に表示するために必要な多くのコードを処理したため、それは大きな混乱でした。代わりに、次のプロパティを使用して、サイズを変更したtextField
場合でも、サイズ変更自体を適切な幅に自動的に調整することにしました。super.drawLayout()
autoSize
override protected function drawLayout():void
{
super.drawLayout();
textField.setTextFormat(tf);
textField.autoSize = TextFieldAutoSize.LEFT;
textField.x = this.width - textField.width;
}
いくつかの問題はありましたが、今では機能しました。ただし、これらは最小限であり、テキスト形式と自動サイズを定義する行をコンストラクターに移動することで修正されましたCellRenderer
(とにかく最初に行うべきだったことに気付きました)。最終的に、私の最終的な機能クラスは次のようになりました。
package
{
import fl.controls.listClasses.CellRenderer;
import fl.controls.listClasses.ICellRenderer;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
import flash.text.TextFieldAutoSize;
public class RightAlignCell extends CellRenderer implements ICellRenderer
{
private var tf:TextFormat;
public function RightAlignCell()
{
tf = new TextFormat();
tf.align = TextFormatAlign.RIGHT;
textField.setTextFormat(tf);
textField.autoSize = TextFieldAutoSize.LEFT;
}
override protected function drawLayout():void
{
super.drawLayout();
textField.x = this.width - textField.width - 5;
}
}
}
5 ピクセルの減算はtextField.x
、列の境界に触れるのではなく、テキストの見栄えを良くするために行った、ほんの少しの配置です。
解決策は簡単ですが、長い投稿で申し訳ありませんが、詳しく説明することにしました。基本的に、私は上記のクラスを思いつきましたが、うまくいきました。