Я запутался в стилях кнопок для дизайна материалов. Я хотел бы получить разноцветные рельефные кнопки, как в прикрепленной ссылке, например кнопки «принудительная остановка» и «удаление», показанные в разделе «Использование». Есть ли доступные стили или мне нужно их определить?
http://www.google.com/design/spec/components/buttons.html#buttons-usage
Я не смог найти стили кнопок по умолчанию.
Пример:
<Button style="@style/PrimaryButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Calculate"
android:id="@+id/button3"
android:layout_below="@+id/editText5"
android:layout_alignEnd="@+id/editText5"
android:enabled="true" />
Если я пытаюсь изменить цвет фона кнопки, добавив
android:background="@color/primary"
все стили исчезают, такие как сенсорная анимация, тень, закругленный угол и т. д.
Ответы:
Я добавлю свой ответ, так как я не использую другие предоставленные ответы.
В библиотеке поддержки версии 7 все стили уже определены и готовы к использованию, для стандартных кнопок доступны все эти стили:
Widget.AppCompat.Button
:Widget.AppCompat.Button.Colored
:Widget.AppCompat.Button.Borderless
Widget.AppCompat.Button.Borderless.Colored
:Чтобы ответить на вопрос, стиль для использования, следовательно,
Как изменить цвет
Для всего приложения:
Цвет всех элементов управления пользовательского интерфейса (не только кнопок, но и кнопок с плавающим действием, флажков и т. Д.) Управляется атрибутом,
colorAccent
как описано здесь . Вы можете изменить этот стиль и применить свой собственный цвет в определении вашей темы:Для конкретной кнопки:
Если вам нужно изменить стиль определенной кнопки, вы можете определить новый стиль, наследуя один из родительских стилей, описанных выше. В приведенном ниже примере я просто изменил цвет фона и шрифта:
Тогда вам просто нужно применить этот новый стиль к кнопке с помощью:
Чтобы установить дизайн кнопки по умолчанию в макете, добавьте эту строку в тему styles.xml:
где
@style/btn
ваша тема кнопки. Это устанавливает стиль кнопки для всех кнопок в макете с определенной темойисточник
colorButtonNormal
attr не работает для меня на Android 4.1.2. Ни в коем случае не может установить цвет кнопки (android:background
нарушает стиль материала кнопки).style=""
вместо того,Android:theme=""
чтобы перейти на последнюю, исправили эту проблему для меняСамое простое решение
Шаг 1. Используйте последнюю версию библиотеки поддержки
Шаг 2. Используйте AppCompatActivity в качестве родительского класса Activity.
Шаг 3. Использование пространства имен приложения в XML-файле макета
Шаг 4: Используйте AppCompatButton вместо Button
источник
android.support.v7.widget.AppCompatButton
потому что инструмент сборки автоматически использует это, когда вы указываетеButton
textColor
переопределяет цвет текста для отключенного состояния.Widget.MaterialComponents.Button.OutlinedButton
крайней мере, не изменился на серый .Если я вас правильно понимаю, вы хотите сделать что-то вроде этого:
В таком случае должно быть достаточно использовать:
Или для API менее 21:
В дополнение к использованию материала темы учебника .
Анимированный вариант здесь .
источник
Вот как я получил то, что хотел.
Сначала сделал кнопку (в
styles.xml
):Волнистость и фон для кнопки, как для рисования
primary_round.xml
:Это добавило волновой эффект, который я искал.
источник
Добавьте зависимость к вашему
build.gradle
:Затем добавьте
MaterialButton
свой макет:Вы можете проверить полную документацию здесь и API здесь .
Для изменения цвета фона у вас есть 2 варианта.
backgroundTint
атрибут.Что-то вроде:
materialThemeOverlay
атрибут.Что-то вроде:
Вариант № 2 требует
'com.google.android.material:material:1.1.0'.
Старая поддержка библиотеки:
С новой библиотекой поддержки 28.0.0 библиотека проектирования теперь содержит
MaterialButton
.Вы можете добавить эту кнопку в наш файл макета с помощью:
По умолчанию этот класс будет использовать цвет акцента вашей темы для цвета фона кнопок и белый для цвета текста кнопок.
Вы можете настроить кнопку с этими атрибутами:
app:rippleColor
: Цвет, который будет использоваться для эффекта ряби кнопокapp:backgroundTint
: Используется для нанесения оттенка на фон кнопки. Если вы хотите изменить цвет фона кнопки, используйте этот атрибут вместо фона.app:strokeColor
: Цвет, который будет использоваться для нажатия кнопкиapp:strokeWidth
: Ширина, которая будет использоваться для нажатия кнопкиapp:cornerRadius
: Используется для определения радиуса, используемого для углов кнопкиисточник
Вот пример, который поможет последовательно применять стиль кнопок в вашем приложении.
Вот пример темы, которую я использовал с конкретными стилями ..
Вот как я определил форму кнопки и эффекты внутри папки res / drawable-v21 ...
Углы 2dp должны соответствовать теме материала.
источник
Рядом
android.support.design.button.MaterialButton
(о котором упоминает Габриэле Мариотти ),Существует также другой
Button
виджет с именем,com.google.android.material.button.MaterialButton
который имеет разные стили и простирается отAppCompatButton
:Заполнено, повышено
Button
(по умолчанию) :Заполнено, без поднятия
Button
:Текст
Button
:Значок
Button
:Текст
Button
с иконкой :Читайте: https://material.io/develop/android/components/material-button/
источник
app:backgroundTint
иapp:backgroundTintMode
из документации .Я пробовал много ответов и сторонних библиотек, но ни один из них не удерживал границы и не повышал эффект перед леденцом на палочке, в то время как имел эффект пульсации на леденце без недостатка. Вот мое окончательное решение, объединяющее несколько ответов (границы / рельефные изображения плохо отображаются на изображениях из-за глубины цвета в оттенках серого):
леденец
Pre-леденец
build.gradle
layout.xml
вытяжка-V21 / btn_bg.xml
рисуем / btn_bg.xml
Деятельность по созданию
источник
1) Вы можете создать кнопку с закругленными углами, определив XML-объект для рисования, и вы можете увеличить или уменьшить радиус, чтобы увеличить или уменьшить округлость угла кнопки. Установите этот XML Drawable в качестве фона кнопки.
2) Чтобы изменить анимацию перехода теней и теней по умолчанию между состояниями кнопок, необходимо определить селектор и применить его к кнопке с помощью свойства android: stateListAnimator. Для полной ссылки настройки кнопки: http://www.zoftino.com/android-button
источник
Я только что создал библиотеку Android, которая позволяет легко изменять цвет кнопки и цвет пульсации
https://github.com/xgc1986/RippleButton
Вам не нужно создавать стиль для каждой кнопки, которую вы хотите, с другим цветом, что позволяет настраивать цвета случайным образом
источник
rippleColor has already been defined
некоторые пользователи уже упоминали об этом в «выпусках»Вы можете добавить авиацию к виду, добавив к нему ось z, и можете иметь тень по умолчанию. эта функция была предоставлена в L-превью и будет доступна после ее выпуска. На данный момент вы можете просто добавить изображение, которое дает этот вид для фона кнопки
источник