酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

AndroidでButtonに勝手に影が入ってしまう

SDKレベルを25から27に上げた影響か今まで気付いていなかっただけか、AndroidアプリのButtonに影(shadow)が入ってしまうようになりました。今まで問題なかったのにどうして……

<Button
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:background="@drawable/hogehoge_button"
    android:text="@string/hogehoge"
    android:textSize="36dp"
    android:id="@+id/hogehogeButton" />

よくよく調べてみるとstateListAnimatorでボタンを押したときの挙動について定義されている様子です。setStateListAnimator(null);を指定すればよさそうです。

binding.hogehogeButton.setStateListAnimator(null);

他にもxmlのButtonのプロパティでstyle="?android:attr/borderlessButtonStyle"を追加してもよさそうでした。

<Button
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:background="@drawable/hogehoge_button"
    android:text="@string/hogehoge"
    android:textSize="36dp"
    style="?android:attr/borderlessButtonStyle"
    android:id="@+id/hogehogeButton" />