2011-12-07 4 views
3

私は状態セレクタを使いたくありません。元の色が何であっても、テキストカラーにフィルタを適用するための汎用コードを記述したいと思います。PorterDuffフィルタをテキストカラーに適用するにはどうすればよいですか?

実際には、このボタンを押すと着色ボタンの一部になります。私は簡単のImageButtonの着色できることを学びました:

imageButton.setColorFilter(Color.argb(150, 155, 155, 155)); 

をボタンに、私は、背景画像の着色することができます

button.getBackground().setColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY); 

しかし、私はトラブル色付けする方法を考え出すを抱えていますボタンのテキストのカラー値です。何か案は?どこかの方法があるので、PorterDuffの色合いを任意の色の値に適用できるので、新しい色をtet色として設定できますか?

答えて

5

ドキュメンテーションやフォーラムを勉強していて、PorterDuffフィルタをテキストや任意の(int)カラー値に直接適用する方法はありません。すべてが画像に関連しているようです。

私の回避策は醜いですが、私が見つけた唯一の解決策:

int normalTextColor = Color.argb(0, 155, 155, 155); 
Bitmap bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); //make a 1-pixel Bitmap 
Canvas canvas = new Canvas(bitmap); 
canvas.drawColor(normalTextColor); //color we want to apply filter to 
canvas.drawColor(pressedFilterColor, mode); //apply filter 
int pressedTextColor = bitmap.getPixel(0, 0); 

プレスト - など、あなたのTextViewに新しいpressedTextColor、ボタン、と今はsetColorを()またはSETTEXTCOLORを(使用することができます)

私は、1ピクセルのビットマップを描くことを伴わない代替方法について聞いてみたいと思います。これはむしろばかばかしいようですが、これは仕事を完了させるものです。

関連する問題