更改Android浮动操作按钮图像

48

我使用了这个库https://github.com/futuresimple/android-floating-action-button。如何更改主按钮的图片?我想在选择其中一个较小按钮后立即更改按钮图像。

我该如何更改主按钮的图片?我希望在选择其中一个较小的按钮后能够立即更改按钮的图片。


我遇到了同样的问题,让我很头疼。感谢https://dev59.com/flwY5IYBdhLWcg3wATpt#35697105,它对我很有效,希望对其他人也有帮助。 - Purvik Rana
9个回答

58

36

你可以在你的 .XML 文件中使用这个:

android:src="@drawable/icon" // change backgroung icon
app:backgroundTint="@color/icons" // change background color

在代码中使用这个:

 mFloatingActionButton.setImageResource(R.drawable.icon2);

3
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab_btn);

// State 1 -on

fab.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.fab_on));

// State  2 - off

fab.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.fab_off));

1

我最近遇到了同样的问题,我尝试了以下选项

  fab:fab_icon="@drawable/icon"

并且

 android:src="@drawable/icon" // change backgroung icon

尝试了编程方式,甚至。
 fab_menu_btn.setImageResource();

什么都没用。

解决方案:在应用的 build.gradle 文件中替换

  compile 'com.getbase:floatingactionbutton:1.10.0'

compile 'com.github.toanvc:floatingactionmenu:0.8.9'

在.xml文件中使用:


           <toan.android.floatingactionmenu.FloatingActionsMenu
          </toan.android.floatingactionmenu.FloatingActionsMenu>

在活动文件中:
      floatingActionsMenu.setIcon(getResources().getDrawable(R.mipmap.icon));

1
在 Kotlin 中,这将是:
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
private fun pauseTimer() {
floatingActionButton.setImageDrawable(getDrawable(R.drawable.ic_baseline_play_arrow))

1
在 Material Design 版本中:
  • build.gradle(应用程序)
defaultConfig {
    vectorDrawables.useSupportLibrary = true // For srcCompat
}

dependencies {
    implementation 'com.google.android.material:material:<version>'
}
  • XML(用于设置图标)
app:srcCompat="@drawable/ic_google"
app:tint="@color/colorGoogle"

更多文档:https://material.io/develop/android/components/floating-action-button/

-1

很遗憾,使用这个库时你无法更改菜单中的图标(查看此库的问题以获取更多信息)

这就是为什么我放弃了这个库,并转而使用一个更加灵活的库! 它最初是一份分支,但现在更加先进.

这里是链接


-1

我曾经遇到过同样的问题,但是我成功地找到了自己的解决方案。也许其他人也会觉得有用。我已经在另一个问题(如何为getbase FloatingActionsMenu设置图标)中发布了完整的答案,但是这里发布的部分与动态更改主菜单按钮图片/图像的问题相关。在这种情况下,您需要将“链接问题”的答案和下面的答案结合起来。

要在选择floatingActionButton时更改菜单按钮上的图标,可以按照以下方式实现:

在xml文件中创建菜单按钮,在.java文件中以编程方式创建浮动按钮,并设置菜单按钮(颜色按钮、颜色按下按钮和图像)。然后简单地将所有按钮添加到菜单按钮中。您还可以通过在FloatingActionsMenu类中注释掉代码来停用菜单按钮的动画。

然后,每次创建按钮时,示例如下:

final FloatingActionButton actionA = new FloatingActionButton(getBaseContext());
        actionA.setTitle("Familie");
        actionA.setIcon(R.drawable.world_map);
        actionA.setSize(FloatingActionButton.SIZE_MINI);
        actionA.setColorNormalResId(R.color.red);
        actionA.setColorPressedResId(R.color.black_semi_transparent);
        actionA.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                menuMultipleActions.setMenuButton(R.drawable.icon, R.color.red_transparent, R.color.black_semi_transparent);
                Toast.makeText(MainMapView.this, "Action Description", Toast.LENGTH_SHORT).show();
                ((FloatingActionsMenu) findViewById(R.id.multiple_actions)).collapse();
                return;
            }
        });

请参考链接中发布的答案,了解如何配置类并定义菜单按钮和浮动按钮。
因此,这里需要注意的重要部分是:
menuMultipleActions.setMenuButton(R.drawable.icon, R.color.red_transparent, R.color.black_semi_transparent);

你需要在FloatingActionsMenu类中添加这个方法。只需在想要更新图片的每个floatingActionButton上调用该方法。

更多信息可以在我发布的链接中找到。因此,当你点击其中一个floatingActionButton时。

目前菜单按钮上的颜色没有正确更新,但如果我找到解决方案,我也会在此更新答案。希望这可以帮助你,祝愉快编程。


有什么原因使用了-1,还是只是为了好玩?有人尝试过这个解决方案,但它对他没有起作用吗? - Thanos
我投了-1票,因为它对我没用。事实上,在我投票后的一段时间里,我试图取消投票,因为这不太好,但我没有被允许...所以,抱歉 :/ - Valentin Filyov

-4
添加属性。
fab:fab_icon="@drawable/fab_expand"

在 XML 中初始化浮动操作菜单。


嘿,这个属性不存在!fab:fab_icon - Jorgesys
这个答案是针对自定义库futuresimple的,而不是标准FAB的。 - Ashish Rawat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接