fab.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(PrivateDealActivity.this, R.color.colorWhite)));
Это не работает. Как изменить цвет фона плавающей кнопки действия
Возможный дубликат Android меняет цвет плавающей кнопки действия
Использование xml: app: backgroundTint = "YOUR_COLOR_CODE" Использование программным способом: floatButton.setBackgroundTintList (ColorStateList.valueOf ( getResources (). GetCo lor ("YOUR_COLOR_CODE")));
Убедитесь, что вы используете android.support.design.widget.FloatingActionButton
floatButton.setBackgroundTintList (ColorStateList.valueOf ( getResources (). getCo lor ("YOUR_COLOR_CODE"))); // этот код у меня не работает.
Простым решением вашей проблемы было бы изменение цвета по умолчанию colorAccent.
Как указано в Разработчики Android - FloatingActionButton:
The background color of this view defaults to the your theme's colorAccent. If you wish to change this at runtime then you can do so via setBackgroundTintList(ColorStateList).
Если невозможно изменить ваш цветовой акцент в соответствии с требованиями вашего проекта, но вам необходимо реализовать это программно, вы можете опубликовать свой код, и я буду более чем счастлив обновить свой ответ.
OP использует setBackgroundTintList, и он не работает ... поэтому этот ответ не помогает
Вы можете использовать этот код для изменения цвета фона:
FloatingActionButton button = findViewById(R.id.your_button);
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP && button instanceof AppCompatButton) {
((AppCompatButton) button).setSupportBackgroundTintList(ColorStateList.valueOf(*your color in integer*));
} else {
ViewCompat.setBackgroundTintList(button, ColorStateList.valueOf(*your color in integer*));
}
Пожалуйста, попробуйте это.
app:backgroundTint = "@android:color/darker_gray"
Вы могли бы использовать
app:backgroundTint = "@color/colorAccent"
как показано ниже
<android.support.design.widget.FloatingActionButton
android:id = "@+id/add_student_house"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
app:backgroundTint = "@color/colorAccent"
android:src = "@drawable/ic_house_add"/>
просто обратите внимание, что это приложение: backgroundTint, а не android: backgroundTint
Также вы можете сделать это, добавив стиль:
<style name = "AppTheme.FloatingActionButton" >
<item name = "colorAccent">@color/colorAccent</item>
</style>
И задайте этот стиль как тему в плавающей кнопке действия, как показано ниже:
android:theme = "@style/AppTheme.FloatingActionButton"
<android.support.design.widget.FloatingActionButton
android:id = "@+id/add_student_house"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:theme = "@style/AppTheme.FloatingActionButton"
android:src = "@drawable/ic_house_add"/>
Просто используйте этот атрибут:
android:backgroundTint = "@color/yourColor"
Используя материальные компонентыFloatingActionButton и Тема материал по умолчанию, он использует цвет с атрибутом colorSecondary.
Чтобы изменить этот цвет, у вас есть разные варианты:
app:backgroundTint в xml:<com.google.android.material.floatingactionbutton.FloatingActionButton
...
app:backgroundTint = ".." />
<item name = "backgroundTint"> <!--<item name = "floatingActionButtonStyle">@style/Widget.MaterialComponents.FloatingActionButton</item> -->
<style name = "MyFloatingActionButton" parent = "@style/Widget.MaterialComponents.FloatingActionButton">
<item name = "backgroundTint">....</item>
</style>
materialThemeOverlay, чтобы переопределить цвет по умолчанию colorSecondary только для компонента: <style name = "MyFloatingActionButton" parent = "@style/Widget.MaterialComponents.FloatingActionButton">
<item name = "materialThemeOverlay">@style/MyFabOverlay</item>
</style>
<style name = "MyFabOverlay">
<item name = "colorSecondary">@color/custom2</item>
</style>
Ваш код полностью верен. Я также написал аналогичный способ изменения цвета фона плавающей кнопки действия программно. Просто проверьте свой xml-код один раз. Мой XML-код:
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_alignParentEnd = "true"
android:layout_alignParentBottom = "true"
app:borderWidth = "0dp"
android:id = "@+id/fab"
android:layout_margin = "16dp"
app:elevation = "8dp"/>
Помните, что здесь важно хранить borderWidth = "0dp".
Теперь в коде Java:
fab = view.findViewById(R.id.fab);
fab.setBackgroundTintList(ColorStateList.valueOf(required_color));
Здесь вы можете заменить required_color на Color.parseColor() или ContextCompat.getColor().
Отметьте свой код как код и объясните, что вы ожидаете, а также что происходит на самом деле.