AppCompatテーマを使用していて、ボタンにminHeight属性を設定します。
<style name="Theme.MyTheme" parent="Theme.AppCompat">
<item name="Android:buttonStyle">@style/MyButtonStyle</item>
</style>
<style name="MyButtonStyle" parent="...?">
<item name="Android:minHeight">60dp</item>
</style>
ただし、MyButtonStyle
の親として設定するWidget.AppCompat.Button
スタイルはありません。 Android:Widget.Button
を使用すると、すべてのボタンが古い安っぽいスタイルのように見えます。 TextAppearance.AppCompat.Button
などの他のさまざまなAppCompatテーマを試しましたが、機能しません。
ボタンスタイルの親テーマを除外すると、ボタンのスタイルが正しく設定されなくなります。
デフォルトのTheme.AppCompat
buttonStyle
をカスタマイズするにはどうすればよいですか?
あなたが持つことができます Base.MyButtonStyle
拡張Android:Widget.Holo.Button
API 14以降(res/values-v14/styles.xml
)およびAndroid:Widget.Material.Button
API 21以降(res/values-v21/styles.xml
。このスタイルは、デバイスのシステムバージョンによって異なります。ここにプラットフォーム固有の変更を加えます。
次にMyButtonStyle
を拡張しますBase.MyButtonStyle
を定義し、Android:minHeight
ここ(res/values/styles.xml
)。これはすべてのプラットフォームに適用されます。
ボタンはスタイルMyButtonStyle
を使用できます。
この例では、最小SDKが14であると想定しています。
はい、appcompat-v7ボタンスタイルはありません(少なくとも、まだです)。
[〜#〜]編集[〜#〜]
これは、Lollipopより古いプラットフォームのHoloボタンで問題ないと想定しています。それは邪魔にならない感じがして、波紋なしでできるなら、それはうまくいくはずです。波紋が必要な場合は、サードパーティのLollipopボタンライブラリをグーグル検索することをお勧めします。
私自身の質問に答えるために、それは表示されます AppCompatは実際にはサポートしていません 現在Button
ウィジェット:
AppCompatは、UIウィジェットのサブセットに対して、Androidの以前のバージョンで同様の動作を提供します。
- AppCompatのツールバーによって提供されるすべてのもの(アクションモードなど)
- EditText
- スピナー
- チェックボックス
- ラジオボタン
- スイッチ(新しいAndroid.support.v7.widget.SwitchCompatを使用)
- CheckedTextView
私が目にする唯一の回避策は、Androidソースコードからマテリアルボタンのスタイルを再作成することです。これは、私の望みの範囲外に広がるタスクです。
Styles.xmlでAppCompat +22を使用したカスタムボタンスタイル
<style name="Button.Tinted" parent="Widget.AppCompat.Button">
<item name="colorButtonNormal">YOUR_TINT_COLOR</item>
<item name="colorControlHighlight">@color/colorAccent</item>
<item name="Android:textColor">@Android:color/white</item> </style>
あなたのlayout.xmlで
<Button
Android:id="@+id/but_next"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:text="@string/but_continue"
Android:theme="@style/Button.Tinted" />
新しいMaterialComponentを使用すると、com.google.Android.material.button.MaterialButton
通常のButton
の代わりに。
しかし、スタイルを設定するために、テーマには別の属性materialButtonStyle
が使用され、この親テーマTheme.MaterialComponents.DayNight.NoActionBar
。
すると、テーマは次のようになります。
<style name="NewAppTheme"
parent="Theme.MaterialComponents.DayNight.NoActionBar">
.......
<-- IMPORTANT if you are using com.google.Android.material.button.MaterialButton to style them use this parameter
<item name="materialButtonStyle">@style/ButtonStyle</item>
</style>
ButtonStyle
では、次のようにボタンの属性を変更できます。
<style name="ButtonStyle" parent="Widget.MaterialComponents.Button.UnelevatedButton">
<item name="Android:minHeight">60dp</item>
</style>
Android:
を削除します
<style name="Theme.MyTheme" parent="Theme.AppCompat">
<item name="buttonStyle">@style/MyButtonStyle</item>
</style>