2011-01-14 16 views
0

TabActivityのタブインジケータにImageViewsを使用しています。私は同じJPEGファイルの2つのコピーを持っています.1つは元のファイルの75%に縮尺されています。私ができるようにしたいのは、通常のサイズを選択し、小さいものを選択しないことです。タブインジケータとしてImageViewで選択/非選択状態を処理する

StateListDrawableはImageViewでは動作しませんので、私はこれを自分で処理しなければならないと考えています。私が見つけることができるのは、タブの選択の変更に関連するようです。TabHost.onTabChanged(String tabId) - 私はに渡された文字列tabIdと仮定します。

これは、タブの変更を追跡する唯一の方法ですか?以前に選択したタブでビューの状態を変更できるようにするイベントハンドラ(またはハンドラ)を持たせてから、新しいタブで同じように変更できるようにすると便利です。私はint currentSelectionのような変数を維持することができますが、もっと自動化できれば便利です。

+0

"StateListDrawableはImageViewで動作しません" - 確かにそうです。 – CommonsWare

+0

@CommonsWare:StateListDrawableの 'selector'を定義するXMLファイルを使用するときに、ImageViewのsetImageDrawable()を使用しようとするとClassCastExceptionが発生します。私はそれを使って周りを走り回り、それを解決できませんでした。あなたが私を指すことができるサンプルコードへのリンク? – Squonk

+2

'setImageDrawable()'ではなく 'setImageResource()'を使います。 – CommonsWare

答えて

1

ソリューション:私の理想的なアプローチは、ImageViewsでStateListDrawablesを使用することでしたが、状態イメージを定義するxmlファイルでImageView.setImageDrawable()を使用しようとするとClassCastExceptionが発生しました。

代わりにsetImageResource()を使用するのが、私の必要とするものに対して完全に機能します。 CommonsWareのおかげで私は正しい方向に向いています。

関連する問題