Как настроить стиль кнопки материала AppCompat?

Я использую тему 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>
нет Widget.AppCompat.Button стиль для установки в качестве родителя для MyButtonStyle. Если я использую android:Widget.Button, то все мои кнопки выглядят как старый дерьмовый стиль. Я пробовал различные другие темы AppCompat, такие как TextAppearance.AppCompat.Button, но они не работают.

оставляя родительскую тему для стиля кнопки, кнопка также не будет стилизована правильно.

как я могу настроить по умолчанию Theme.AppCompat buttonStyle?

4 ответов


вы можете 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 (ну, по крайней мере, пока нет).

редактировать

это предполагает, что вы в порядке с кнопкой Holo на платформах старше Lollipop. Он чувствует себя ненавязчивым, и если вы можете обойтись без ряби, это должно быть просто прекрасно. Если вы хотите рябь, я предлагаю Вам google для сторонней библиотеки кнопок lollipop.


чтобы ответить на мой собственный вопрос, он появляется AppCompat фактически не поддерживает на Button виджет в настоящее время:

AppCompat обеспечивает аналогичное поведение на более ранних версиях Android для подмножества UI виджеты:

  • все, что предусмотрено панелью инструментов AppCompat (режимы действий и т. д.)
  • полей EditText
  • счетчик
  • флажок
  • переключатель
  • переключатель (используйте новый андроид.поддержка.В7.штучка.SwitchCompat)
  • CheckedTextView

единственным обходным путем, который я вижу, было бы воссоздать стиль кнопки материала из исходного кода Android, задача, которая выходит за рамки моего желания.


Пользовательский Стиль Кнопки С AppCompat + 22 в твоем стиле.в XML

<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>

в свой макет.в 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" />

удалить android:

<style name="Theme.MyTheme" parent="Theme.AppCompat">
    <item name="buttonStyle">@style/MyButtonStyle</item>
</style>

https://stackoverflow.com/a/32363833