2009-08-17 5 views
1

私のカスタムボタンを下のボタンサンプルのようにしたい。 具体的には、ボタンの幅をラベル内の最大の単語の幅(つまり、私の例では「長さ」の幅)で決める必要があります。ラベルは折り返され、切り捨てられません。 そしてアイコンの上端と私のボタンの上端の間に1ピクセルだけ必要です。 私はこれまで多くのことを試したが、役に立たなかった。 horizo​​ntalGapとverticalGapをゼロに、パディングをゼロに減らしました。しかし、まだ何も。助けてください。ここでFlexカスタムボタンコンポーネント

は、私が今持っているものです。

<mx:Button top="0" cornerRadius="2" paddingLeft="0" paddingRight="0" leading="0" letterSpacing="0" paddingTop="0" paddingBottom="0" verticalGap="0" horizontalGap="0" textAlign="center" labelPlacement="bottom" icon="{MyIcon}" height="60" width="75" label="Elongated Label" fontSize="10" /> 

alt text

+0

私はあなたが動作していないコードを投稿すると、より良い回答を得ると思います。 – Tony

答えて

1

これはまったく簡単なことではありません。あなたがあなた自身のボタンを作成する必要があります

public class Mybutton extends Button {...} 

オーバーライドcreateChildrenとIUITextFieldのワードラップを設定するには、trueにラベルに使用しました。

ボタンの幅を判断するには、測定値を上書きし、独自のラインメトリックを使用します。小節を正しく取得すると、ボタンが適切に配置されます。

+0

まさに私がやったことです。その後あなたの答えを得ました。しかし、ありがとう。 – CodeQrius

0

私は、現時点では私の目の前でのdevの環境を持っていないが、これらの線に沿って何か作業をする必要があります:

  1. LabelのtruncateToFitプロパティをfalseに設定します(または、wordWrapをtrueに設定してTextFieldを使用します - できるだけ多くの単語をまとめる必要があります)。

私は上記のいずれかを使用する必要はありませんでしたが、うまくいけばあなたの問題の一部の簡単な解決策になるはずです。コードがなければ、なぜパディングがうまくいかなかったのか分かりませんが、切り捨てという言葉とは何かが関係しています。

代替方法として、Buttonを使用したり、アイコンのソースを指定したり、オブジェクトのlabelPlacementプロパティを指定してテキストを配置する場所を決めるのはなぜですか?

EDIT:WordWrapについてのプロパティはありません。Adobe Flexフォーラムでは、自動的な機能がないコンテンツに基づいたサイジングに関するこのような質問に対して推奨されているので、最も長い単語を見つけなければなりません。ボタンの幅を調整します(creationCompleteイベントの場合)。それはかもしれない、パディング用として

creationComplete="event.target.width=returnMyWidth();" 

:ピクセル比にフォントを見つけるために実験することは私の最善の策だろう(あるいは、あなたはすべての文字が、それによって推定を簡素化し、同じスペースを与えられている固定幅フォントを使用することができます)あなたが設定したカスタム幅に関連しているか、イメージを埋め込むことによって自動的にパディングが設定されている可能性があります - 私は本当にわからないので、誰かがこの経験に基づいてコメントを提供できるのは良いでしょう。