'editable' プロパティが false に設定されているフレックス プログラムで、すべての textinput および textarea コンポーネントのスタイル (背景色) を変更する方法はありますか?
ありがとう
'editable' プロパティが false に設定されているフレックス プログラムで、すべての textinput および textarea コンポーネントのスタイル (背景色) を変更する方法はありますか?
ありがとう
これには特定のスタイルがないため、カスタムスキンを作成する必要があります。次の手順に従ってください。
spark.skins.spark.TextInputSkin
新しいクラスにコピーすることです。updateDisplayList()
に基づいて、スキンのクラスに必要な変更を適用します。editable
例えば:。
override protected function updateDisplayList(
unscaledWidth:Number, unscaledHeight:Number):void {
super.updateDisplayList(unscaledWidth, unscaledHeight);
//when editable the background will be red and otherwise it'll be blue
background.color = hostComponent.editable ? 0xff0000 : 0x0000ff;
}
。
@namespace s "library://ns.adobe.com/flex/spark";
s|TextInput {
skinClass: ClassReference("my.skins.MyTextInputSkin");
}
次のようなことを行うことで、より一般的にすることができます。
updateDisplayList()メソッドの場合:
override protected function updateDisplayList(
unscaledWidth:Number, unscaledHeight:Number):void {
super.updateDisplayList(unscaledWidth, unscaledHeight);
var bgColorStyle:String = "backgroundColor";
if (!hostComponent.editable) = "nonEditableBackgroundColor";
background.color = getStyle(bgColorStyle);
}
そしてCSSでは:
@namespace s "library://ns.adobe.com/flex/spark";
s|TextInput {
skinClass: ClassReference("my.skins.MyTextInputSkin");
backGroundColor: #ff0000;
nonEditableBackgroundColor: #0000ff;
}
このようにして、カスタムスキンをどこでも再利用し、スタイリングを通じてさまざまな色を適用できます。ホストコンポーネントのメタデータでそのスタイルが宣言されていないため、MXMLを介し
て設定できないことに注意してください。これはデフォルトのスタイルであり、TextInputのメタデータで宣言されているため、nonEditableBackgroundColor
適用されません。backGroundColor