web-dev-qa-db-ja.com

Androidを使用できない:新しいマテリアルコンポーネントのボタン付きの背景

Android xで新しいマテリアルコンポーネントcom.google.Android.material:materialを使用していますが、ボタンにカスタムの背景を設定できません。

app:backgroundTintを使用して色を変更できることを知っています

しかし、デフォルトの背景には、私が取り除きたいパディングと、Android:backgroundを使用して自分の背景を設定する古い方法がありますが、これは機能しなくなりました。

docs を確認しましたが、この変更についての言及はありません。

7
humazed

MaterialButtonクラスのドキュメント はこう言っています:

Android:background属性は使用しないでください。 MaterialButtonは独自の背景ドローアブルを管理します。新しい背景を設定すると、MaterialButtonはそれが導入する新しい属性が正しく機能することを保証できなくなります。デフォルトの背景が変更された場合、MaterialButtonは明確に定義された動作を保証できません。

ただし、 GitHub readme は次のように述べています。

注:MaterialButtonは、ButtonおよびAppCompatButtonと視覚的に異なります。主な違いの1つは、AppCompatButtonには左側と右側に4dpインセットがあるのに対し、MaterialButtonにはないということです。

これは左/右のインセットについてのみ言及していますが、Readmeの 属性セクション は、4つのインセットすべてがサポートされていることを示しています。

enter image description here

したがって、これらの属性を<MaterialButton>タグに追加できます。

Android:insetTop="0dp"
Android:insetBottom="0dp"
7
Ben P.

新しいバージョン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>
_
1