Furudateのブログ

プログラミングやネットワーク系の知識・技術がメインのブログ。技術メモ帳的な感じになるかと。岩手から発信していきます。

【Android】ImageButtonの枠を消す方法とクリックした時に色や画像を変える方法

こんにちは。

ImageButtonを使うと、デフォルトだと枠ができてしまい少し格好悪いです。
そこで、その枠をなくしたいのですが、なくすだけならImageButtonの背景を以下のように指定するとできます。

android:background="@null"

ただ、上記のようにやるとクリックしたときに反応がなくなってしまい、クリックしたかどうか分かりません。
そこで、クリックしたときに背景色や画像を変えることでクリックしたことを示したいと思います。

やり方は以下のとおりです。

  • 画像を変更する場合は、あらかじめ画像を用意する
  • 次のようなxmlファイルを drawable/ に作る
    • XMLの新規作成でリソースタイプをdrawableに指定し、ルート要素をselectorにする

button_color.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- Buttonが押された時 -->
    <item android:state_pressed="true"
        android:drawable="@drawable/start_button_clicked" />
    <!-- 色を変更する場合は、android:color="@color/red" のようにする -->
    
    <!-- Buttonが押されてない時 -->
    <item android:state_pressed="false"
        android:drawable="@drawable/start_button" />

    <!-- Buttonにフォーカスがあたった時 -->
    <item android:state_focused="true"
        android:drawable="@drawable/start_button" /> 

</selector>
  • レイアウトファイルで、ImageButton のパラメータに以下を指定する
android:background="@drawable/button_color"
  • android:src="@drawable/button のパラメータを消す(これを消さないと背景が見えません。これでハマってました。。。)
    • 画像は先程のXMLで通常時の画像指定をしているので問題ありません。


以上です。
ちなみに上記の方法は普通のButtonでもできます。

それでは。


参考にさせていただいたサイト

Y.A.M の 雑記帳: Android Button の色や画像を変える