Android xで新しいマテリアルコンポーネントcom.google.Android.material:material
を使用していますが、ボタンにカスタムの背景を設定できません。
app:backgroundTint
を使用して色を変更できることを知っています
しかし、デフォルトの背景には、私が取り除きたいパディングと、Android:background
を使用して自分の背景を設定する古い方法がありますが、これは機能しなくなりました。
docs を確認しましたが、この変更についての言及はありません。
MaterialButton
クラスのドキュメント はこう言っています:
Android:background
属性は使用しないでください。MaterialButton
は独自の背景ドローアブルを管理します。新しい背景を設定すると、MaterialButton
はそれが導入する新しい属性が正しく機能することを保証できなくなります。デフォルトの背景が変更された場合、MaterialButton
は明確に定義された動作を保証できません。
ただし、 GitHub readme は次のように述べています。
注:
MaterialButton
は、Button
およびAppCompatButton
と視覚的に異なります。主な違いの1つは、AppCompatButton
には左側と右側に4dp
インセットがあるのに対し、MaterialButton
にはないということです。
これは左/右のインセットについてのみ言及していますが、Readmeの 属性セクション は、4つのインセットすべてがサポートされていることを示しています。
したがって、これらの属性を<MaterialButton>
タグに追加できます。
Android:insetTop="0dp"
Android:insetBottom="0dp"
新しいバージョン1.1.0( 'com.google.Android.material:material:1.1.0')では、デフォルトのスタイルからいくつかのテーマ属性を上書きする場合、新しいmaterialThemeOverlay
属性を使用できます。
あなたの場合、あなたは次のようなことをすることができます:
_<style name="MtButtonStyle"
parent="Widget.MaterialComponents.Button">
<item name=“materialThemeOverlay”>@style/GreenButtonThemeOverlay</item>
</style>
<style name="GreenButtonThemeOverlay">
<item name="colorPrimary">@color/green</item>
</style>
_