Я пытался изменить цвет кнопки плавающего действия материала, но безуспешно.
<android.support.design.widget.FloatingActionButton
android:id="@+id/profile_edit_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_margin="16dp"
android:clickable="true"
android:src="@drawable/ic_mode_edit_white_24dp" />
Я попытался добавить:
android:background="@color/mycolor"
или через код:
FloatingActionButton fab = (FloatingActionButton) rootView.findViewById(R.id.profile_edit_fab);
fab.setBackgroundColor(Color.parseColor("#mycolor"));
или
fab.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#mycolor")));
Но ничего из вышеперечисленного не сработало. Я также попробовал решения в предложенном дублирующем вопросе, но ни один из них не работает; кнопка оставалась зеленой и также стала квадратной.
PS Было бы также неплохо узнать, как добавить волновой эффект, но и этого не мог понять.
Ответы:
Как описано в документации , по умолчанию он принимает цвет, заданный в атрибуте styles.xml colorAccent .
Если вы хотите изменить цвет
Как упоминалось в комментариях @Dantalian, если вы хотите изменить цвет значка для библиотеки поддержки проектирования до версии 22 (включительно) , вы можете использовать
Для библиотеки поддержки проектирования начиная с версии v23 вы можете использовать:
Также с
androidX
библиотеками вам нужно установить границу 0dp в макете xml:источник
Ответ Виджета Бадиганнавара правильный, но,
ColorStateList
как правило, он сложный, и он не сказал нам, как это сделать. Поскольку мы часто фокусируемся на измененииView
цвета в нормальном и нажатом состоянии, я собираюсь добавить больше деталей:Если вы хотите изменить
FAB
цвет в нормальном состоянии, вы можете просто написатьЕсли вы хотите изменить
FAB
цвет в нажатом состоянии, спасибо за Библиотеку поддержки дизайна 22.2.1 , вы можете просто написатьПри установке этого атрибута, когда вы долго нажимаете на кнопку
FAB
, пульсация с вашим цветом появится в точке касания и раскроется на всю поверхностьFAB
. Пожалуйста, обратите внимание, что это не изменитFAB
цвет в нормальном состоянии. Ниже API 21 (Lollipop) эффект ряби отсутствует, ноFAB
его цвет все равно будет меняться при нажатии.Наконец, если вы хотите реализовать более сложный эффект для состояний, то вам нужно углубиться в этот вопрос
ColorStateList
, вот такой вопрос, обсуждающий его: Как мне создать ColorStateList программно? ,ОБНОВЛЕНИЕ: Спасибо за комментарий @ Кейтлин. Чтобы удалить обводку FAB, используя backgroundTint в качестве цвета, вы можете установить
app:borderWidth="0dp"
в xml.источник
app:borderWidth
программно? СпасибоFloatingActionButton
, я боюсь, что вы не можете установить его программно прямо сейчас, так как нет установщика дляmBorderWidth
.Как отметил Василь Вальчев в комментарии, это проще, чем кажется, но есть небольшая разница, которую я не заметил в своем XML.
Обратите внимание, что это:
и не
источник
android:backgroundTint=""
от Api level 21 и части Lollipop Material Design и будут игнорироваться ниже Lollipop. Также это не меняетFAB
цвет полностью, потому что это не сплошной цвет. Вы должны использоватьapp:
тот, чтобы заставить его работать.android:color
вызвало сбой моего приложения, и это сводило меня с ума! Спасибо за сохранение моего приложения и то, что осталось от моего здравомыслия ;-)Если вы попытаетесь изменить цвет FAB с помощью приложения, возникнет некоторая проблема. рамка кнопки имеет другой цвет, так что вы должны сделать:
и в коде установите цвет:
источник
просто используйте,
не использовать,
источник
FAB окрашен в зависимости от вашего
colorAccent
.источник
источник
Другие решения могут работать. Это 10-фунтовый подход гориллы, который имеет преимущество широкого применения в этом и подобных случаях:
styles.xml:
Ваш макет XML:
источник
String types not allowed (at 'theme' with value 'AppTheme.FloatingAccentButtonOverlay')
. Может быть, я упускаю точку в файле styles.xml ....android:theme="@style/AppTheme.FloatingAccentButtonOverlay"
но этот solutin не работает для меня в любом случае ...Документ предполагает, что он принимает @ color / accent по умолчанию. Но мы можем переопределить его в коде, используя
Также помните,
Минимальная версия API для использования этой библиотеки - 15, поэтому вам нужно обновить ее! если вы не хотите этого делать, вам нужно определить собственный рисунок и украсить его!
источник
Изменение цвета фона кнопки «Плавающая» с помощью строки ниже
Изменение цвета значка кнопки «Плавающее действие»
источник
Благодаря автозаполнению. Мне повезло после нескольких ударов и испытаний:
- или - (оба в основном одно и то же)
Это работало для меня на API версии 17 с библиотекой дизайна 23.1.0.
источник
У меня та же проблема, и все это вырывает мои волосы. Спасибо за это https://stackoverflow.com/a/35697105/5228412
Что мы можем сделать..
это хорошо работает для меня и желаю другим, кто доберется сюда.
источник
Обратите внимание, что вы добавляете цвета в файл res / values / color.xml и включаете атрибут в свой список.
источник
С Материальной Темой и материальными компонентами
FloatingActionButton
по умолчанию это берет цвет, установленный вstyles.xml
атрибутеcolorSecondary
.app:backgroundTint
атрибут в XML:Ты можешь использовать
fab.setBackgroundTintList();
Вы можете настроить свой стиль, используя
<item name="backgroundTint">
атрибутmaterialThemeOverlay
атрибут, чтобы переопределить цвета по умолчанию только для некоторых компонентов:источник
Новое отображение атрибутов темы для кнопки с плавающим действием в материале 1.1.0
В теме вашего приложения:
источник
При использовании привязки данных вы можете сделать что-то вроде этого:
Я сделал очень простой пример
источник
я сделал это следующим образом android: background = "@ color / colorAccent" я просто захожу в папку res, затем нажимаю на значения папки и затем на colors.xml в colors.xml я просто меняю цвет colorAccent и вызываю его в android: background и это сделано
источник
Нам не хватает того, что перед тем, как установить цвет на кнопке, важно поработать над значением, которое вы хотите для этого цвета. Таким образом, вы можете перейти к значениям> цвет. Вы найдете цвета по умолчанию, но вы также можете создавать цвета, копируя и вставляя их, изменяя цвета и имена. Затем ... когда вы идете, чтобы изменить цвет плавающей кнопки (в Activity_main), вы можете выбрать тот, который вы создали
Пример - код на значения> цвета с цветами по умолчанию + еще 3 цвета, которые я создал:
Теперь моя кнопка с плавающим действием с цветом, который я создал и назвал «corPar»:
Это сработало для меня. Удачи!
источник
Если у вас есть кнопка с плавающим действием без рисования, вы можете изменить оттенок программно, используя:
источник
добавить цвета в файл color.xml, а затем добавить эту строку кода ...
floatingActionButton.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.fab2_color)));
источник
Вы можете использовать этот код, если вы хотите изменить цвет программно
источник
использование
app: backgroundTint = "@ color / orange" в
источник
для дизайна материалов я просто изменил цвет кнопки плавающего действия следующим образом: Добавьте две нижеприведенные строки в свою кнопку плавающего действия xml. И сделано,
источник
в Котлине:
источник