以编程方式从 Appcompat 22.2.0 更改浮动操作按钮的颜色
Posted
技术标签:
【中文标题】以编程方式从 Appcompat 22.2.0 更改浮动操作按钮的颜色【英文标题】:Change color of Floating Action Button from Appcompat 22.2.0 programmatically 【发布时间】:2015-09-07 02:15:40 【问题描述】:我想知道如何更改支持库 22.2.0 中的浮动操作按钮颜色? 我试过了
button.setBackgroundColor(color);
但很明显,这会改变按钮的可绘制对象并变成正方形。
现在我想知道如何改变颜色,而只是改变颜色,而不触及形状?
提前致谢
【问题讨论】:
这里是answer 【参考方案1】:也许晚了,但可以提供帮助。
fab.setBackgroundTintList(ColorStateList.valueOf(Color
.parseColor("#33691E")));
并从颜色列表中解析实际颜色代码You can find here
【讨论】:
只是补充一点:如果您不想使用硬编码的字符串颜色值,而是引用存储在您的 colors.xml 中的颜色,您可以使用以下内容:fab.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(getActivity(), R.color.white)));
【参考方案2】:
创建一个ColorStateList
并将其设置为背景色:
button.setBackgroundTintList(new ColorStateList(new int[][]new int[]0, new int[]color));
【讨论】:
颜色是动态设置的,所以不能有xml资源文件 然后动态创建颜色状态列表? 基于问题,假设button
是android.support.design.widget.FloatingActionButton。这意味着它将仅限于 v7。
或者只是ColorStateList.valueOf(color)
,来自:***.com/a/32031019/1773325
注意:如果以编程方式设置背景颜色,请不要在 XML 中设置任何与背景颜色相关的属性。刚刚发现 XML 默认值总是会覆盖代码中的任何运行时更改的艰难方式(奇怪)。【参考方案3】:
要做到这一点向后兼容:
DrawableCompat.setTintList(DrawableCompat.wrap(fab.getDrawable()), tintColor); // <- icon
DrawableCompat.setTintList(DrawableCompat.wrap(fab.getBackground()), backgroundTintColor); // <- background
【讨论】:
【参考方案4】:在colors.xml
(本例中为R.color.purple
)中创建一个颜色资源并像这样使用它:
floatingActionButton.setBackgroundTintList(getResources().getColorStateList(R.color.purple));
【讨论】:
请考虑为您的代码附上解释性文字,以帮助未来的读者。【参考方案5】:你必须使用
在 XML 中与attribute app:backgroundTint
在带有 .setBackgroundTintList 的代码中
阅读这个答案
Android changing Floating Action Button color
【讨论】:
谢谢。它对我有帮助。【参考方案6】:方法一:改变xml中浮动操作栏(fab)的颜色:
要更改浮动操作栏(fab)的颜色,只需按照此步骤操作
只需在浮动操作栏(fab)的 xml 中添加“app:backgroundTint="#colorcode"” ..例如
app:backgroundTint="#8393ca"
在#8393ca 的地方添加你想要的任何颜色代码
使用示例..
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_
android:layout_
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:backgroundTint="#8393ca"
android:src="@drawable/send" />
方法 2:以编程方式更改浮动操作栏颜色
只需在您的代码中添加这一行
首先在你的 values=>colors 中创建一个红色,然后在你的创建活动中添加这个代码
fab.setBackgroundTintList(getResources().getColorStateList(R.color.red));
or
fab.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#33691E")));
学分:http://androidrace.com/2016/12/12/how-to-change-fabfloating-action-bar-color-android/
【讨论】:
这也将文本颜色更改为相同的背景颜色。如何避免它或像#FFF一样更改文本颜色? 我注意到如果您使用的是可绘制图标,这也会将您删除。【参考方案7】:在此处查看接受的答案:Android changing Floating Action Button color
如果你想改变颜色
在带有 app:backgroundTint 属性的 XML 中 在带有 .setBackgroundTintList 的代码中
【讨论】:
这仅来自 API 级别 21。 @marienke 你确定你在 API 21 下测试时在 xml 中使用了app
命名空间吗?
@LouisCAD ***.com/questions/44108455/… 你要求的 :)
@marienke 您只想在 xml 中使用 ColorStateList
,使用代码中的 setEnabled(isNfcEnabled)
使其使用 ColorStateList
xml 文件中的正确颜色。
@marienke 然后,查看CheckedTextView
源代码以使您的FAB 子类具有您将在ColorStateList
中使用的checked
状态。然后,您只需在 NFC 打开或关闭时以编程方式更改 FAB 的检查状态,可能使用setChecked(...)
方法。【参考方案8】:
试试这个代码。它将为背景资源添加色调。
button.setBackgroundTintList(getResources().getColorStateList(R.color.yourColor));
【讨论】:
【参考方案9】:属性名称为backgroundTint
所以我认为有一个名为
的函数button.setBackgroundTint(color)
【讨论】:
【参考方案10】:如果您使用来自https://github.com/Clans/FloatingActionButton 的浮动操作按钮库,请使用此
fab.setColorNormal(getResources().getColor(R.color.fab_color1));
【讨论】:
【参考方案11】:XML background:tint color 将始终覆盖您提供的任何颜色
以编程方式。因此,要以编程方式提供颜色,请从 XML 文件中删除 android:backgroundTint="#96989A"
行并使用:
button.setBackgroundTintList(getResources().getColorStateList(R.color.yourColor));
【讨论】:
【参考方案12】:有时您在颜色文件中获得了您的颜色并且您想使用那个。
下面的代码你可以做什么
fab.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor(getString(R.color.youcolor))));
如您所知,要以编程方式更改它,您需要使用setBackgroundTintList()
,然后传递所需的ColorStateList.valueOf()
,这个需要一个特定的整数并解析它......
注意:如果您只是立即输入 int 颜色,有时可能会给您带来无法获得所需颜色的问题,因此我不使用它,也不推荐这样使用它
然后放入ColorStateList.valueOf()
,Color.parseColor()
这就是你需要放入的...
这需要一个字符串,但你在颜色文件中有 int 颜色,那该怎么办?
在Color.parseColor()
内传递getString()
,这是每个活动都有的方法,所以在getString()
内你把最后你的颜色作为R.color.yourcolor
【讨论】:
【参考方案13】:只需在浮动操作按钮下的 xml 文件中使用这一行
android:backgroundTint="#96989A"
【讨论】:
这不是“以编程方式”以上是关于以编程方式从 Appcompat 22.2.0 更改浮动操作按钮的颜色的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式从 Appcompat 22.2.0 更改浮动操作按钮的颜色
如何以编程方式将背景颜色从 android.support.design 更改为 MaterialButton