android - 以编程方式更改后图标未显示在 FloatingActionButton 中
问题描述
我有一个AppCompatActivity
with aTabLayout
和 aFloatingActionButton
我根据当前显示的选项卡更改它的图标。
FloatingActionButton
当我以编程方式更改using setImageDrawable
or的可绘制对象时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;
}
}
});
前:
在我以编程方式将其更改为“加号”矢量可绘制对象后:
预期的:
所以,我的问题是:是什么原因造成的,如何解决?
解决方案
我也遇到了这个问题,我通过添加对 hide 方法的调用来解决
mFloatingActionButton.setImageDrawable(getDrawable(R.drawable.default_fab_icon));
mFloatingActionButton.hide();
mFloatingActionButton.show();
我曾尝试过.invalidate()
,但没有奏效。这似乎是切换片段时的问题。我在使用 Navigation AndroidX 组件时体验过它。
我不认为这是最好的解决方案,但我尝试了很多,只有这个有效 - 没有闪烁效果。
推荐阅读
- javascript - 如何在我的 html 中显示 Flickr API?
- javascript - Vue-Resource 上传文件到 PHP
- python-3.x - 将一列添加到另一个数据帧时,熊猫数据帧索引会变得混乱并重复行
- reactjs - 使用 webpack 4 编写库时如何拆分块?
- javascript - 数据表以编程方式选择行而不触发选择事件
- c# - 从网站上抓取多个列表。
- reactjs - 为`Field` redux 组件构建一个高阶组件
- javascript - 在 Index.HTML 文件中调用的 Java 脚本对象
- elasticsearch - Elasticsearch 文件大小和索引大小不一致查询
- javascript - 具有活动类的多个菜单项