0

Программируемая настройка backgroundTint с помощью метода setBackgroundTintList не работает, но установка через XML app:backgroundTint тег работает - почему?Как программно установить backgroundTint FloatingActionButton с ColorStateList?

состояние fab_background_color.xml список цвет:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_selected="true" 
      android:color="#654321"/> 

    <item android:color="#123456"/> 

</selector> 

Моя раскладка активность:

<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/test" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center"/> 

</android.support.design.widget.CoordinatorLayout> 

и код вида деятельности:

public class SampleActivity extends AppCompatActivity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_position_sample); 

     final FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.test); 

     // Uncomment to test - this does NOT work however. 
     //fab.setBackgroundTintList(getResources().getColorStateList(R.color.fab_background_color)); 

     fab.setOnClickListener(new View.OnClickListener() 
     { 
      @Override public void onClick(View v) 
      { 
       if (fab.isSelected()) 
        fab.setSelected(false); 
       else 
        fab.setSelected(true); 
      } 
     }); 
    } 
} 

Если добавить:

fab.setBackgroundTintList(getResources().getColorStateList(R.color.fab_background_color));

или:

fab.setBackgroundTintList(ContextCompat.getColorStateList(this, R.color.fab_background_color));

К коду деятельности до создания щелчка слушателя, ничего не происходит.

Если добавить:

app:backgroundTint="@color/fab_background_color" 

Для кода макета деятельности для FloatingActionButton, я получаю ожидаемое поведение.

Любые мысли? Я делаю что-то неправильно?

+0

Когда делает метод Программный способ не работает? В состоянии щелчка? – OBX

+0

Когда кнопка будет выбрана (сделана в моем коде активности), цвет не обновляется. Он остается в цвете по умолчанию. – Zach

+0

Установить, чтобы выбрать? Вы добавляете 'setBackgroundTintList()' внутри 'onClickListener()', чтобы сделать его простым? – OBX

ответ

1

использовать это:

fab.setBackgroundTintList(ContextCompat.getColorStateList(getApplicationContext(), R.color.purple_200)); 

Ура!

+0

К сожалению, я не вижу никакой разницы в поведении. Спасибо хоть. – Zach

 Смежные вопросы

  • Нет связанных вопросов^_^