У меня есть AppCompatActivity
с TabLayout
и FloatingActionButton
, которые я меняю, это значки в зависимости от того, какая вкладка отображается в данный момент.
Когда я программно изменяю рисунок FloatingActionButton
, используя setImageDrawable
или setImageResource
, новый значок не отображается, только пустой фон кнопки.
Как ни странно,если я скрываю и показываю FloatingActionButton
после того, как я программно изменил его значок, он появляется.
Это часть, где я меняю значок:
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout) {
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
switch (position) {
case 0:
floatingActionButton.setImageDrawable(ContextCompat.getDrawable(mMainActivity, R.drawable.ic_save_24dp));
if (!floatingActionButton.isShown()) floatingActionButton.show();
mNavigationView.getMenu().getItem(1).setChecked(true);
break;
case 1:
floatingActionButton.setImageDrawable(ContextCompat.getDrawable(mMainActivity, R.drawable.ic_add_24dp));
if (!floatingActionButton.isShown()) floatingActionButton.show();
mNavigationView.getMenu().getItem(2).setChecked(true);
break;
case 2:
floatingActionButton.hide();
mNavigationView.getMenu().getItem(3).setChecked(true);
break;
}
}
});
До:
![before](https://i.hizliresim.com/8azGok.png)
После того, как я программно изменил его на вектор «плюс»:
![result](https://i.hizliresim.com/lqZomb.png)
Ожидается:
![expected](https://i.hizliresim.com/mMoVn1.png)
Итак, мой вопрос: что является причиной этого и как его можно решить?