Программируемая настройка 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, я получаю ожидаемое поведение.
Любые мысли? Я делаю что-то неправильно?
Когда делает метод Программный способ не работает? В состоянии щелчка? – OBX
Когда кнопка будет выбрана (сделана в моем коде активности), цвет не обновляется. Он остается в цвете по умолчанию. – Zach
Установить, чтобы выбрать? Вы добавляете 'setBackgroundTintList()' внутри 'onClickListener()', чтобы сделать его простым? – OBX