[Flex] spark:TextAreaのdisabled時(enabled=false時)スタイル指定
TextAreaのenabledプロパティをfalseにした時は、通常はグレイがかった感じになって入力不可となります。
この時のスタイルを変える方法をご紹介します。
TextAreaのenable=falseの時には、ステートがdisabledになります。
このステートに対してのスタイルを指定します。
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <s:layout> <s:VerticalLayout/> </s:layout> <fx:Declarations> </fx:Declarations> <fx:Style> @namespace s "library://ns.adobe.com/flex/spark"; @namespace mx "library://ns.adobe.com/flex/mx"; global { fontSize:20; } s|TextArea { contentBackgroundColor: yellow; } s|TextArea:disabled { contentBackgroundColor: red; color:black; } </fx:Style> <s:CheckBox label="TextAreaのenabled" change="{textArea1.enabled = CheckBox(event.currentTarget).selected}" selected="true"/> <s:TextArea id="textArea1" width="300" height="100" text="ここはTextAreaです"/> </s:Application>
サンプルコードの「s|TextArea:disabled」のスタイル指定が、enabled=falseの時のスタイルとなります。
コロンの後ろにステート名をつければそのステートでのスタイル指定となるようです。
実際の動作はコチラ
[embedSWF]http://propg.ee-mall.info/wp-content/uploads/TextAreaTest.swf,300,200[/embedSWF]
実際にenabled=falseにしてみると、スタイルに指定した”red”ではなく、少し薄い色になります。
これは、disabledステート時にalpha値が0.5になるためで、こちらはスタイルでは制御できません。
よく、enabled=false時に入力されている文字が薄くなって見にくいというクレームを受けます。
この薄さを変更するには、スキンを作って指定を変更する必要があります。
TextAreaのスキンをFlashBuilderから作成し、作成されたスキンの最初の定義部を見ます。
<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:fb="http://ns.adobe.com/flashbuilder/2009" alpha.disabledStates="0.5" blendMode="normal">
「alpha.disabledStates=”0.5″」の指定が、enabled=false時のalpha指定となりますので、この値を1.0とすれば、スタイルに指定した通りの色になります。
スキン変更後の動作はコチラ
[embedSWF]http://propg.ee-mall.info/wp-content/uploads/TextAreaTest2.swf,300,200[/embedSWF]
ココだけのためにスキンを作るのはわずらわしいですね。
== ランキングに参加しています。ぜひクリックお願いします ==
[Flex] 機種依存文字チェックバリデータ 機種依存文字チェッカープログラムを公開しました