Android 改变悬浮操作按钮的颜色
Android 改变悬浮操作按钮的颜色
我一直在试图更改Material的浮动操作按钮颜色,但没有成功。
我尝试添加:
android:background="@color/mycolor"
或通过代码:
FloatingActionButton fab = (FloatingActionButton) rootView.findViewById(R.id.profile_edit_fab); fab.setBackgroundColor(Color.parseColor("#mycolor"));
或
fab.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#mycolor")));
但以上任何一种都没有起作用。我还尝试了建议的重复问题中的解决方案,但它们都不起作用;按钮仍然是绿色的,并且变成了一个正方形。
P.S. 如果知道如何添加涟漪效果,那也很好,我也不是很清楚。
Vijet Badigannavar的答案是正确的,但使用ColorStateList通常会很复杂,而且他没有告诉我们如何做。由于我们经常关注更改View在正常状态和按下状态下的颜色,因此我将添加更多细节:
- 如果您想更改FAB在正常状态下的颜色,只需编写
- 如果您想更改FAB在按下状态下的颜色,则有了Design Support库22.2.1,您只需编写
mFab.setBackgroundTintList(ColorStateList.valueOf(your color in int));
mFab.setRippleColor(your color in int);
通过设置此属性,当您长按FAB时,将在触摸点处出现具有您的颜色的涟漪,并揭示整个FAB的表面。请注意,这不会更改FAB在正常状态下的颜色。 在API 21(Lollipop)以下版本中,没有涟漪效果,但是在按下FAB时,FAB的颜色仍将发生变化。
最后,如果您想为状态实现更复杂的效果,则应深入研究ColorStateList。这里是一个讨论它的SO问题:如何以编程方式创建ColorStateList?
更新:感谢@ Kaitlyn的评论。如果要使用backgroundTint作为其颜色来删除FAB的描边,则可以在xml中设置app:borderWidth =“0dp”。
如文档所述,默认情况下,它会使用在styles.xml中设置的colorAccent属性的颜色。
此视图的背景色默认为主题的colorAccent。如果您希望在运行时更改该颜色,则可以通过setBackgroundTintList(ColorStateList)进行更改。
如果您希望更改颜色
- 可通过XML中的app:backgroundTint属性进行更改
- 可以通过.setBackgroundTintList代码进行更改(由ywwynm提供的答案)
正如评论中@Dantalian所提到的,如果您希望更改Design Support Library 版本号不超过v22的图标颜色,则可以使用
android:tint="@color/white"
如果您使用Design Support Library 自v23以后,则可以使用:
app:tint="@color/white"
同时,如果您使用的是androidX
库,则需要在XML布局中设置0dp边框: