我有一个带有TabLayout和FloatingActionButton的AppCompatActivity,我可以根据当前显示的选项卡更改它的图标。
当我使用setImageDrawable或setImageResource以编程方式更改FloatingActionButton的可绘制内容时,新图标不会出现,只显示按钮的空白背景。
奇怪的是,如果我在以编程方式更改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;
}
}
});之前:

在我以编程方式将其更改为“+”向量可绘制后:

期望值:

所以,我的问题是:是什么导致了这种情况,以及如何解决它?
发布于 2019-06-11 21:34:57
我也遇到了这个问题,我通过添加对hide方法的调用解决了这个问题
mFloatingActionButton.setImageDrawable(getDrawable(R.drawable.default_fab_icon));
mFloatingActionButton.hide();
mFloatingActionButton.show();我曾经尝试过.invalidate(),但那不起作用。在切换片段时,这似乎是一个问题。我在使用导航AndroidX组件时体验到了它。
我不认为这是最好的解决方案,但我尝试了很多,只有这个有效-没有闪烁效果。
发布于 2019-11-29 05:24:40
这是一个已知的错误:https://issuetracker.google.com/issues/117476935
只需升级到解决此问题的com.google.android.material:material:1.1.0-beta02即可。
https://stackoverflow.com/questions/54506295
复制相似问题