首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式更改后,图标不显示在FloatingActionButton中

问以编程方式更改后,图标不显示在FloatingActionButton中
EN

Stack Overflow用户
提问于 2019-02-04 02:47:17
回答 2查看 827关注 0票数 3

我有一个带有TabLayout和FloatingActionButton的AppCompatActivity,我可以根据当前显示的选项卡更改它的图标。

当我使用setImageDrawable或setImageResource以编程方式更改FloatingActionButton的可绘制内容时,新图标不会出现,只显示按钮的空白背景。

奇怪的是,如果我在以编程方式更改FloatingActionButton的图标后隐藏并显示它,它就会显示出来。

这是我更改图标的部分:

代码语言:javascript
复制
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; 
            }
        }
    });

之前:

​

​

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

​

​

期望值:

​

​

所以,我的问题是:是什么导致了这种情况,以及如何解决它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-11 21:34:57

我也遇到了这个问题,我通过添加对hide方法的调用解决了这个问题

代码语言:javascript
复制
 mFloatingActionButton.setImageDrawable(getDrawable(R.drawable.default_fab_icon));
 mFloatingActionButton.hide();
 mFloatingActionButton.show();

我曾经尝试过.invalidate(),但那不起作用。在切换片段时,这似乎是一个问题。我在使用导航AndroidX组件时体验到了它。

我不认为这是最好的解决方案,但我尝试了很多,只有这个有效-没有闪烁效果。

票数 4
EN

Stack Overflow用户

发布于 2019-11-29 05:24:40

这是一个已知的错误:https://issuetracker.google.com/issues/117476935

只需升级到解决此问题的com.google.android.material:material:1.1.0-beta02即可。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54506295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档