2011-06-16 5 views
0

iPhoneのUISegmentedControlに相当するコントロールを作成しようとしています。これは、ラジオボタンのように機能する3つのボタンです。アイデアは、1つが選択されたときに無効にされ、別のビジュアルスタイルを持ちます。Blackberry Field.VISUAL_STATE_NORMAL

ボタンは、必要なビジュアルスタイルを得るためにFieldから直接サブクラス化され、カスタムGridFieldManager内でグループ化されます。

問題がクリックされると、ボタンは期待どおりに動作しますが、フォーカスが移動されると、ボタンはField.Visual_STATE_NORMAL(コンソール出力で確認)に戻ります。 GridFieldManagerを含む唯一のカスタマイズは、そのマネージャが使用されている他の領域でのフォーカスを決定するための2つのループです。

次のようにボタンが初期化されています

private void init() { 
    this.setBackground(Field.VISUAL_STATE_NORMAL, BackgroundFactory.createLinearGradientBackground(0xfc9b68, 0Xfc9b68, 0xff5800, 0xff5800)); 
    this.setBackground(Field.VISUAL_STATE_DISABLED, BackgroundFactory.createLinearGradientBackground(0xe78568, 0xff5800, 0xd53000, 0xd53000)); 
    this.setBackground(Field.VISUAL_STATE_FOCUS, BackgroundFactory.createLinearGradientBackground(0xd8d8d8, 0xd8d8d8, 0x0000000, 0x000000)); 
} 

問題は何とか、各ボタンの表示状態がリセットされているということです。要するに、クライアントは、iPhoneやAndroidアプリケーションのように見え、動作するBlackberryアプリケーションが必要です。これがどのように起こる可能性があるかについてのアイデアは非常に高く評価されます。

+0

固定。選択された状態を設定するフラグを使用し、ペイントするたびにビジュアルを適切にリセットします。 –

+0

あなたの質問に答えを加えてそれを受け入れてください –

答えて

0

私が見つけた解決策は、フィールドが選択されているか選択されているかどうかを追跡するフラグを追加することでした。これはMainScreenで設定および解除されています。そのフラグに基づいて、視覚状態は、各再描画中に必要に応じて更新される。