はじめに
マテリアルなUIがかなり浸透してきていて、画像を丸く表示する為のShapeableImageViewや、枠などを設定できるMaterialCardViewなどを使用したいケースが多くなってきていますよね。
UIに枠や角丸をつけたいが故に、Drawableを大量生産している、、、歴史のあるプロジェクトではよく見かける例な気がします。
そんな時に、単独でマテリアルなUIを使用したいと思っても、基本はstyleから変えなければならず改修範囲が広く使えない、そんな経験あるのではないでしょうか?
もしかしたらご存知の方も多いのかもしれませんが、styleを変更しなくてもマテリアルなUIを使用できる方法がありますので、ご紹介しようと思います。
設定内容
設定は非常に簡単です。
対象のマテリアルなUI、もしくは親のレイアウトに以下を付与するだけです。
android:theme="@style/Theme.MaterialComponents"
上記を設定する事で、本来styleのparentにMaterialの設定を行わなければならない所を上記設定のみでマテリアルなUIを使用できます。
さいごに
本来はparentにMaterialComponents.Lightなどを設定して、もっと大きなレイヤーでマテリアルなUIに対応する、、、これが正しい気はしていますが、これにかかるコストや影響範囲などを考えると全てのプロジェクトで対応するのはハードルが高い気がしています。
そんな時にはこの対応も選択肢に入れてもらうと良いかもしれません。