2015-06-16 5 views
3

Я пытаюсь установить фон FAB для другого цвета в XML. Я знаю, что могу сделать это в коде, но с моей стороны также потребуется много неудобного рефакторинга.Изменить фон на FloatingActionButton?

<android.support.design.widget.FloatingActionButton 
    android:layout_width="40dp" 
    android:layout_height="40dp" 
    android:background="#F38E1B" 
    android:id="@+id/fab"/> 

enter image description here

По какой-то причине, фон остается синим, когда он должен быть оранжевым. Я попробовал также установить фон для рисования, но это дает те же результаты.

Это ошибка, или я просто что-то пропустил?

+1

Вы можете попробовать: setBackgroundColor (INT цвет) из официальной документации https://developer.android.com/reference/android/support /design/widget/FloatingActionButton.html – FlavienBert

+0

@FlavienBert Я сделал, и я получил тот же результат. И, как я сказал, для этого с помощью кода потребуется много рефакторинга. –

ответ

2

Хорошо, я понял. Оказывается, вам нужно установить фон на drawable (спасибо @Nilesh), но было что-то не так с drawable, на который я его настраивал. Я использовал это:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="oval"> 
      <solid android:color="@color/al_color_accent_orange_light"/> 
     </shape> 
    </item> 
</layer-list> 

как мой выдвижной, и это сработало.

1

Как FloatingActionButton расширяет ImageView

увидеть это link

Смотрите также линии нет 76

они получают background в drawable и вы устанавливаете color

так что дон Не думаю, что вы можете изменить его, используя color.

попробуйте установить drawable в качестве фона

посмотреть link и линии нет 20

4

Я также попытался использовать тот же подход, что и вы и получаете тот же результат. Мой раствор должен был состоять в следующем:

<item name="colorAccent">@color/yourColor</item> 

в моей теме приложения.

Однако этот цвет также будет использоваться во всех виджетах.

Надеюсь, это поможет!

+0

Спасибо, но это для довольно большого приложения, поэтому я не думаю, что это вариант. –

2

У меня была та же проблема. Вот как я решаю свою проблему: я просто создаю новую тему для своей кнопки.

Мои FAB XML:

<android.support.design.widget.FloatingActionButton 
     ... 
     android:theme="@style/MapButton"/> 

Моя новая тема в style.xml:

<style name="MapButton" parent="AppTheme"> 
     <item name="colorAccent">#FFFFFF</item></style> 

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

Надеюсь, это поможет.

1

в XML

<android.support.design.widget.FloatingActionButton 
    ... 
    app:backgroundTint="@color/background_tint" 
    android:src="@drawable/ic_add" /> 

в коде

mFlaotsetBackgroundTintList(ColorStateList.valueOf(Color.Blue)) 
Смежные вопросы