Кнопки раскраски в Android с материальным дизайном и AppCompat
Прежде чем обновление AppCompat
появилось сегодня, я смог изменить цвет кнопок в Android L, но не в старых версиях. После включения нового обновления AppCompat я не могу изменить цвет для любой версии, когда я пытаюсь, кнопка просто исчезает. Кто-нибудь знает, как изменить цвет кнопки?
На следующих рисунках показано, чего я хочу достичь:
Белая кнопка по умолчанию, красный - это то, что я хочу.
Это то, что я делал ранее, чтобы изменить цвет кнопок в styles.xml
:
<item name="android:colorButtonNormal">insert color here</item>
и сделать это динамически:
button.getBackground().setColorFilter(getResources().getColor(insert color here), PorterDuff.Mode.MULTIPLY);
Также я изменил родительскую тему от @android:style/Theme.Material.Light.DarkActionBar
до Theme.AppCompat.Light.DarkActionBar
Ответы
Ответ 1
Официально зафиксировано в библиотеке поддержки rev.22 (Пт 13 марта 2015 г.). См. Соответствующую проблему с кодом Google:
https://issuetracker.google.com/issues/37008632
Пример использования
theme.xml:
<item name="colorButtonNormal">@color/button_color</item>
v21/theme.xml
<item name="android:colorButtonNormal">@color/button_color</item>
Ответ 2
Изменить (22.06.2016):
Библиотека Appompat начала поддерживать кнопки материалов после того, как я отправил исходный ответ. В этом сообщении вы можете увидеть самую легкую реализацию поднятых и плоских кнопок.
Исходный ответ:
Так как AppCompat не поддерживает кнопку, вы можете использовать xml в качестве фона. Для этого я взглянул на исходный код Android и нашел связанные файлы для кнопок с элементами стиля.
1 - Посмотрите на оригинальную реализацию кнопки материала из источника.
Посмотрите btn_default_material.xml на исходный код Android.
Вы можете скопировать файл в папку drawable-v21. Но не прикасайтесь к цвету attr здесь. Файл, который вам нужно изменить, - это второй файл.
вытяжка-V21/custom_btn.xml
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight">
<item android:drawable="@drawable/btn_default_mtrl_shape" />
</ripple>
2 - Получить форму кнопки исходного материала
Как вы понимаете, в этом чертеже используется форма, которую вы можете найти в этом файле исходного кода.
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/button_inset_horizontal_material"
android:insetTop="@dimen/button_inset_vertical_material"
android:insetRight="@dimen/button_inset_horizontal_material"
android:insetBottom="@dimen/button_inset_vertical_material">
<shape android:shape="rectangle">
<corners android:radius="@dimen/control_corner_material" />
<solid android:color="?attr/colorButtonNormal" />
<padding android:left="@dimen/button_padding_horizontal_material"
android:top="@dimen/button_padding_vertical_material"
android:right="@dimen/button_padding_horizontal_material"
android:bottom="@dimen/button_padding_vertical_material" />
</shape>
3 - Получение размеров кнопки материала
И в этом файле вы найдете некоторые размеры, используемые в файле который вы можете найти здесь. Вы можете скопировать весь файл и поместить его в папку values . Это важно для применения того же размера (который используется в кнопках материала) ко всем кнопкам
4 - Создайте еще один файл для старых версий
Для более старых версий у вас должен быть другой вариант с одинаковым именем. Я просто помещаю элементы inline вместо ссылки. Вы можете обратиться к ним. Но опять же, самое главное - это оригинальные размеры кнопки материала.
вытяжка /custom _btn.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- pressed state -->
<item android:state_pressed="true">
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/button_inset_horizontal_material"
android:insetTop="@dimen/button_inset_vertical_material"
android:insetRight="@dimen/button_inset_horizontal_material"
android:insetBottom="@dimen/button_inset_vertical_material">
<shape android:shape="rectangle">
<corners android:radius="@dimen/control_corner_material" />
<solid android:color="@color/PRESSED_STATE_COLOR" />
<padding android:left="@dimen/button_padding_horizontal_material"
android:top="@dimen/button_padding_vertical_material"
android:right="@dimen/button_padding_horizontal_material"
android:bottom="@dimen/button_padding_vertical_material" />
</shape>
</inset>
</item>
<!-- focused state -->
<item android:state_focused="true">
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/button_inset_horizontal_material"
android:insetTop="@dimen/button_inset_vertical_material"
android:insetRight="@dimen/button_inset_horizontal_material"
android:insetBottom="@dimen/button_inset_vertical_material">
<shape android:shape="rectangle">
<corners android:radius="@dimen/control_corner_material" />
<solid android:color="@color/FOCUSED_STATE_COLOR" />
<padding android:left="@dimen/button_padding_horizontal_material"
android:top="@dimen/button_padding_vertical_material"
android:right="@dimen/button_padding_horizontal_material"
android:bottom="@dimen/button_padding_vertical_material" />
</shape>
</inset>
</item>
<!-- normal state -->
<item>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/button_inset_horizontal_material"
android:insetTop="@dimen/button_inset_vertical_material"
android:insetRight="@dimen/button_inset_horizontal_material"
android:insetBottom="@dimen/button_inset_vertical_material">
<shape android:shape="rectangle">
<corners android:radius="@dimen/control_corner_material" />
<solid android:color="@color/NORMAL_STATE_COLOR" />
<padding android:left="@dimen/button_padding_horizontal_material"
android:top="@dimen/button_padding_vertical_material"
android:right="@dimen/button_padding_horizontal_material"
android:bottom="@dimen/button_padding_vertical_material" />
</shape>
</inset>
</item>
</selector>
Результат
Ваша кнопка будет иметь эффект пульсации на устройствах Lollipop. Старые версии будут иметь точно такую же кнопку, кроме эффекта пульсации. Но с тех пор, как вы предоставляете drawables для разных состояний, они также будут реагировать на события касания (как старый).
Ответ 3
Это было улучшено в v23.0.0 библиотеки AppCompat
с добавлением большего количества тем, включая
Widget.AppCompat.Button.Colored
Прежде всего, укажите зависимость appCompat, если вы еще не
compile('com.android.support:appcompat-v7:23.0.0') {
exclude group: 'com.google.android', module: 'support-v4'
}
теперь, так как вам нужно использовать v23 для приложения, вам также понадобится настроить SDK-v23!
compileSdkVersion = 23
targetSdkVersion = 23
В values/theme
<item name="android:buttonStyle">@style/BrandButtonStyle</item>
В values/style
<style name="BrandButtonStyle" parent="Widget.AppCompat.Button.Colored">
<item name="colorButtonNormal">@color/yourButtonColor</item>
<item name="android:textColor">@color/White</item>
</style>
В values-v21/style
<style name="BrandButtonStyle" parent="Widget.AppCompat.Button.Colored">
<item name="android:colorButtonNormal">@color/yourButtonColor</item>
<item name="android:textColor">@color/White</item>
</style>
Так как тема вашей кнопки основана на Widget.AppCompat.Button.Colored
Цвет текста на кнопке по умолчанию белый!
но кажется, что есть проблема, когда вы отключите кнопку, кнопка изменит цвет на светло-серый, но цвет текста останется белым!
Обходной путь для этого - установить цвет текста на кнопке на белый!
как я сделал в стиле, показанном выше.
теперь вы можете просто определить свою кнопку и позволить AppCompat сделать остальные:)
<Button
android:layout_width="200dp"
android:layout_height="48dp" />
Отключено состояние
Включенное состояние
Ответ 4
В Android Support Library 22.1.0 Google высветил значок Button
.
Таким образом, другой способ настроить цвет фона кнопки - использовать атрибут backgroundTint
.
Например,
<Button
android:id="@+id/add_remove_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@color/bg_remove_btn_default"
android:textColor="@android:color/white"
tools:text="Remove" />
Ответ 5
Для поддержки цветных кнопок используйте последнюю библиотеку AppCompat (> 23.2.1) с помощью:
раздуть - XML
Виджет AppCompat:
android.support.v7.widget.AppCompatButton
Стиль AppCompat:
style="@style/Widget.AppCompat.Button.Colored"
NB! Чтобы установить собственный цвет в xml: используйте app
attr: app
вместо android
(используйте приложение alt+enter
или объявите xmlns:app="http://schemas.android.com/apk/res-auto"
чтобы использовать app
)
app: backgroundTint = "@color/your_custom_color"
Пример:
<android.support.v7.widget.AppCompatButton
style="@style/Widget.AppCompat.Button.Colored"
app:backgroundTint="@color/your_custom_color"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Colored Button"/>
или установить его программно - JAVA
ViewCompat.setBackgroundTintList(your_colored_button,
ContextCompat.getColorStateList(getContext(),R.color.your_custom_color));
Ответ 6
С помощью последней библиотеки поддержки вы можете просто наследовать свою активность от AppCompatActivity
, поэтому она будет раздувать ваш Button
как AppCompatButton
и даст вам возможность задать цвет каждой отдельной кнопки на макете с использованием android:theme="@style/SomeButtonStyle"
, где SomeButtonStyle
:
<style name="SomeButtonStyle" parent="@android:style/Widget.Button">
<item name="colorButtonNormal">@color/example_color</item>
</style>
Работал для меня в 2.3.7, 4.4.1, 5.0.2
Ответ 7
если вы хотите ниже стиль
добавьте этот стиль в свою кнопку
style="@style/Widget.AppCompat.Button.Borderless.Colored"
если вы хотите этот стиль
добавить код ниже
style="@style/Widget.AppCompat.Button.Colored"
Ответ 8
Ответ в ТЕМА не стиль
Проблема заключается в том, что цвет кнопки имеет значение colorButtonNormal темы. Я попытался изменить стиль разными способами без везения. Итак, я изменил тему кнопки.
Создайте тему с помощью colorButtonNormal и colorPrimary:
<style name="ThemeAwesomeButtonColor" parent="AppTheme">
<item name="colorPrimary">@color/awesomePrimaryColor</item>
<item name="colorButtonNormal">@color/awesomeButtonColor</item>
</style>
Используйте эту тему в кнопке
<Button
android:id="@+id/btn_awesome"
style="@style/AppTheme.Button"
android:theme="@style/ThemeAwesomeButtonColor"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/btn_awesome"/>
"AppTheme.Button" может быть любой вещью, расширяющей стиль Button, как здесь, я использую основной цвет для цвета текста:
<style name="AppTheme.Button" parent="Base.Widget.AppCompat.Button">
...
<item name="android:textColor">?attr/colorPrimary</item>
...
</style>
И вы получаете кнопку любого цвета, который вы хотите, совместимый с материальным дизайном.
Ответ 9
Я только что создал андроидную библиотеку, которая позволяет легко изменять цвет кнопки и цвет пульсации
https://github.com/xgc1986/RippleButton
<com.xgc1986.ripplebutton.widget.RippleButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn"
android:text="Android button modified in layout"
android:textColor="@android:color/white"
app:buttonColor="@android:color/black"
app:rippleColor="@android:color/white"/>
Вам не нужно создавать стиль для каждой кнопки, которую вы хотите, с другим цветом, позволяя произвольно настраивать цвета
Ответ 10
эта работа для меня с appcompat-v7: 22.2.0 в android + 4.0
в ваших styles.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>
в вашем файле макета
<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" />
Ответ 11
Разметка:
<android.support.v7.widget.AppCompatButton
style="@style/MyButton"
...
/>
styles.xml:
<style name="MyButton" parent="Widget.AppCompat.Button.Colored">
<item name="backgroundTint">@color/button_background_selector</item>
<item name="android:textColor">@color/button_text_selector</item>
</style>
цвет /button _background_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:color="#555555"/>
<item android:color="#00ff00"/>
</selector>
цвет /button _text_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:color="#888888"/>
<item android:color="#ffffff"/>
</selector>
Ответ 12
Для тех, кто использует ImageButton
, вот как вы это делаете:
В style.xml:
<style name="BlueImageButton" parent="Base.Widget.AppCompat.ImageButton">
<item name="colorButtonNormal">@color/primary</item>
<item name="android:tint">@color/white</item>
</style>
в v21/style.xml:
<style name="BlueImageButton" parent="Widget.AppCompat.ImageButton">
<item name="android:colorButtonNormal">@color/primary</item>
<item name="android:tint">@color/white</item>
</style>
Затем в вашем файле макета:
<android.support.v7.widget.AppCompatImageButton
android:id="@+id/my_button"
android:theme="@style/BlueImageButton"
android:layout_width="42dp"
android:layout_height="42dp"
android:layout_gravity="center_vertical"
android:src="@drawable/ic_check_black_24dp"
/>
Ответ 13
Если вы используете решение стиля с помощью colorButtonNormal, не забудьте наследовать от Widget.AppCompat.Button.Colored, чтобы эффект ряби работал;)
Как
<style name="CustomButtonStyle" parent="Widget.AppCompat.Button.Colored">
<item name="colorButtonNormal">@android:color/white</item>
</style>
Ответ 14
Если вы хотите только кнопку "Плоский" материал, вы можете настроить их фон, используя selectableItemBackground как объяснено .
Ответ 15
Для меня проблема заключалась в том, что в Android 5.0 android:colorButtonNormal
не было никакого эффекта, и фактически, ни один элемент из темы (например, android:colorAccent
), но, например, в Android 4.4.3. Проект был сконфигурирован с compileSdkVersion
и targetSdkVersion
до 22, поэтому я внес все изменения, как @Muhammad Alfaifi sugessted, но в конце я заметил, что проблема была buildToolsVersion, который не был обновлен. Как только я изменился на 23.0.1, все начинает работать почти как обычно. Теперь android:colorButtonNormal
по-прежнему не действует, но по крайней мере кнопка реагирует на android:colorAccent
, что для меня приемлемо.
Я надеюсь, что этот намек может помочь кому-то.
Примечание. Я применил стиль непосредственно к кнопке, так как кнопка android:theme=[...]
также не имела эффекта.
Ответ 16
Один из способов вытянуть это означает, что вы просто указываете на стиль и NOT тему. Все кнопки в вашем приложении одинаковы.
В theme.xml добавьте тему
<style name="Theme.MyApp.Button.Primary.Blue" parent="Widget.AppCompat.Button">
<item name="colorButtonNormal">@color/someColor</item>
<item name="android:textColorPrimary">@android:color/white</item>
</style>
Теперь в styles.xml добавьте
<style name="MyApp.Button.Primary.Blue" parent="">
<item name="android:theme">@style/Theme.MyApp.Button.Primary.Blue</item>
</style>
Теперь в вашем макете просто укажите STYLE в вашей кнопке
<Button
...
style="@style/MyApp.Button.Primary.Blue"
... />
Ответ 17
UPDATE
Используйте библиотеку поддержки дизайна (23.2.0) и appcompatwidgets, как показано ниже
В Android Support Library 22.1:
Это делается автоматически при раздувании макетов - замена кнопки с AppCompatButton, TextView с AppCompatTextView и т.д., чтобы обеспечить что каждый может поддерживать тонирование. В этом выпуске эти оттенки теперь доступны общедоступные виджеты, позволяющие сохранять тонирование даже если вам нужно подклассифицировать один из поддерживаемых виджетов.
Полный список виджетов:
AppCompatAutoCompleteTextView
AppCompatButton
AppCompatCheckBox
AppCompatCheckedTextView
AppCompatEditText
AppCompatMultiAutoCompleteTextView
AppCompatRadioButton
AppCompatRatingBar
AppCompatSpinner
AppCompatTextView
Конструкция материалов для предустановленных устройств Lollipop:
AppCompat (он же ActionBarCompat) начал работать как резервный Android 4.0 ActionBar API для устройств, работающих на Gingerbread, обеспечивая общий уровень API поверх реализации с резервным копированием и каркасная реализация. AppCompat v21 предоставляет API и набор функций, обновляемый с Android 5.0
Ответ 18
Если вы хотите использовать стиль AppCompat, например Widget.AppCompat.Button, Base.Widget.AppCompat.Button.Colored и т.д., вам нужно использовать эти стили с совместимыми представлениями из библиотеки поддержки.
Код ниже не работает для прелолипопных устройств:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/Widget.AppCompat.Button" />
Вам нужно использовать AppCompatButton для включенных стилей AppCompat:
<android.support.v7.widget.AppCompatButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/Widget.AppCompat.Button" />
Ответ 19
Я использую это. Эффект пульсации и нажатие кнопки мыши.
style.xml
<style name="Button.Red" parent="Widget.AppCompat.Button.Colored">
<item name="android:textColor">@color/material_white</item>
<item name="android:backgroundTint">@color/red</item>
</style>
Кнопка на макете:
<Button
style="@style/Button.Red"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/close"/>
Ответ 20
Я действительно не хотел менять свои пользовательские стили кнопок, но, к сожалению, они больше не работали.
Мое приложение имеет minSdkVersion 9 и все работает до этого.
Я не знаю, почему, но так как я удалил андроид: перед buttonStyle, похоже, снова работает
now = working:
<item name="buttonStyle">@style/ButtonmyTime</item>
before = просто кнопки с серым материалом:
<item name="android:buttonStyle">@style/ButtonmyTime</item>
У меня нет специальной папки для новой версии Android, так как мои кнопки довольно плоские, и они должны выглядеть одинаково во всех версиях Android.
Может кто-то может сказать мне, почему мне пришлось удалить "андроид":
ImageButton все еще работает с "android:"
<item name="android:imageButtonStyle">@style/ImageButtonmyTimeGreen</item>
Ответ 21
Спустя 2 дня, в поисках ответов, тематическая тематика не работала для меня в API < 21.
Мое единственное решение - переопределить отображение AppCompatButton не только с темой базового приложения "colorButtonNormal", но также и с фоном backgroundview:
public class AppCompatColorButton extends AppCompatButton {
public AppCompatColorButton(Context context) {
this(context, null);
}
public AppCompatColorButton(Context context, AttributeSet attrs) {
this(context, attrs, android.support.v7.appcompat.R.attr.buttonStyle);
}
public AppCompatColorButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
if (TintManager.SHOULD_BE_USED) {
setSupportBackgroundTintList(createButtonColorStateList(getContext(), attrs, defStyleAttr));
}
}
static final int[] DISABLED_STATE_SET = new int[]{-android.R.attr.state_enabled};
static final int[] FOCUSED_STATE_SET = new int[]{android.R.attr.state_focused};
static final int[] PRESSED_STATE_SET = new int[]{android.R.attr.state_pressed};
static final int[] EMPTY_STATE_SET = new int[0];
private ColorStateList createButtonColorStateList(Context context, AttributeSet attrs, int defStyleAttr) {
final int[][] states = new int[4][];
final int[] colors = new int[4];
int i = 0;
final int themeColorButtonNormal = ThemeUtils.getThemeAttrColor(context, android.support.v7.appcompat.R.attr.colorButtonNormal);
/*TypedArray a = context.obtainStyledAttributes(attrs, new int[] { android.R.attr.backgroundTint }, defStyleAttr, 0);
final int colorButtonNormal = a.getColor(0, themeColorButtonNormal);*/
TypedArray a = context.obtainStyledAttributes(attrs, android.support.v7.appcompat.R.styleable.View, defStyleAttr, 0);
final int colorButtonNormal = a.getColor(android.support.v7.appcompat.R.styleable.View_backgroundTint, themeColorButtonNormal);
a.recycle();
final int colorControlHighlight = ThemeUtils.getThemeAttrColor(context, android.support.v7.appcompat.R.attr.colorControlHighlight);
// Disabled state
states[i] = DISABLED_STATE_SET;
colors[i] = ThemeUtils.getDisabledThemeAttrColor(context, android.support.v7.appcompat.R.attr.colorButtonNormal);
i++;
states[i] = PRESSED_STATE_SET;
colors[i] = ColorUtils.compositeColors(colorControlHighlight, colorButtonNormal);
i++;
states[i] = FOCUSED_STATE_SET;
colors[i] = ColorUtils.compositeColors(colorControlHighlight, colorButtonNormal);
i++;
// Default enabled state
states[i] = EMPTY_STATE_SET;
colors[i] = colorButtonNormal;
i++;
return new ColorStateList(states, colors);
}
}
Затем вы можете определить цвет кнопки следующим образом:
<com.example.views.AppCompatColorButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="#ffff0000"
app:backgroundTint="#ffff0000"
android:text="Button"
android:textColor="@android:color/white" />
Ответ 22
Чтобы изменить цвет одной кнопки
ViewCompat.setBackgroundTintList(button, getResources().getColorStateList(R.color.colorId));
Ответ 23
Этот ответ SO помог мне прийти к ответу fooobar.com/questions/12847/...
Я использую этот метод утилиты для установки фонового оттенка кнопки. Он работает с предустановленными устройствами:
// Set button background tint programmatically so it is compatible with pre-lollipop devices.
public static void setButtonBackgroundTintAppCompat(Button button, ColorStateList colorStateList){
Drawable d = button.getBackground();
if (button instanceof AppCompatButton) {
// appcompat button replaces tint of its drawable background
((AppCompatButton)button).setSupportBackgroundTintList(colorStateList);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// Lollipop button replaces tint of its drawable background
// however it is not equal to d.setTintList(c)
button.setBackgroundTintList(colorStateList);
} else {
// this should only happen if
// * manually creating a Button instead of AppCompatButton
// * LayoutInflater did not translate a Button to AppCompatButton
d = DrawableCompat.wrap(d);
DrawableCompat.setTintList(d, colorStateList);
button.setBackgroundDrawable(d);
}
}
Как использовать в коде:
Utility.setButtonBackgroundTintAppCompat(myButton,
ContextCompat.getColorStateList(mContext, R.color.your_custom_color));
Таким образом, вам не нужно указывать ColorStateList, если вы просто хотите изменить оттенок фона и не более, но поддерживать красивые эффекты кнопок, а что нет.
Ответ 24
Еще одно простое решение с помощью AppCompatButton
<android.support.v7.widget.AppCompatButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Widget.AppCompat.Button.Colored"
app:backgroundTint="@color/red"
android:text="UNINSTALL" />
Ответ 25
Я установил android:textColor
@null
в моей теме кнопки, и это помогает.
styles.xml
<style name="Button.Base.Borderless" parent="Widget.AppCompat.Button.Borderless.Colored">
<item name="android:textColor">@null</item>
</style>
some_layout.xml
<Button
style="@style/Button.Base.Borderless"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hint" />
Теперь цвет текста кнопки colorAccent
определен в AppTheme
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="colorAccent">@color/colorAccent</item>
<item name="borderlessButtonStyle">@style/Button.Base.Borderless</item>
<item name="alertDialogTheme">@style/AlertDialog</item>
</style>
Ответ 26
используйте android: backgroundTint = "@color/customColor", и это даст настраиваемый цвет кнопке. Это просто.