プログラマーを職業としてます。 Flex,Air,C#,Oracle,PHPの言語ノウハウを中心に情報発信していきます


[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の時のスタイルとなります。
コロンの後ろにステート名をつければそのステートでのスタイル指定となるようです。

実際の動作はコチラ

This movie requires Flash Player 9.0.0

実際に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とすれば、スタイルに指定した通りの色になります。

スキン変更後の動作はコチラ

This movie requires Flash Player 9.0.0

ココだけのためにスキンを作るのはわずらわしいですね。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です