mucchinのAndroid戦記

ImageButtonの画像をグレーアウト(不活性表示)する方法

Androidでは、画像をそのままボタンにするImageButtonというViewがありますね。
そんなImageButtonを使って、例えば、Aという状態ではImageButtonを押せる状態とし、Bという状態ではボタンを押せなくしたい場合があろうかと思います。

 
 
 
 

こんなとき、以下のようなコードにすれば、一応は解決します。


ImageButton imageButton = (ImageButton)findViewById(R.id.imagebutton1);
imageButton.setEnabled(false);
ですがこれだと、パッと見た感じは押せるように見えてしまいます。
いわゆる不活性表示的な形で見せたいですよね。
とはいって、元々ImageButtonに使っている画像に対して、不活性用の画像を用意するとなると手間です。
もちろん、見た目重視のアプリケーションではそうした方がいいかもしれませんが、個人でプログラム書いてたりする人等、画像作成に長けてない人もたくさんいるでしょう。私はそうです。

そんなとき、簡単に不活性っぽく見せる事が出来ます。
先ほどのコードの後に、以下のようなコードを追加します。


imageButton.setColorFilter(0xaa808080);
メソッド名からわかるとおり、フィルターを掛けてやる事ができます。
引数はargb形式です。適当に試して、自分の好みの色を指定すればよいでしょう。
上記の場合は、若干透過させたグレーのフィルターを掛けているイメージです。

画像をわざわざ作り直さなくても、この方法であれば結構汎用的に使えると思います。
今回は以上です。