有没有办法使用主题修改SwipeRefreshLayout中箭头的颜色?
我知道您可以以编程方式使用此代码
public void setColorSchemeResources (int... colorResIds)
但我希望默认情况下将箭头设置为我的应用程序的主题,并且每次在某处使用SwipeRefreshLayout时都不必在代码中更改它。
从支持v4 23.0.1开始,在SwipeRefreshLayout构造函数中从xml中提取的唯一属性是android.R.attr.enabled
意思是,设置颜色的唯一方法是在代码中。
但是,您可以创建颜色ID的数组资源来保存颜色组合和引用,而不是在整个代码库中包含重复列表。没有更好,但至少有一个变化,只需要触摸一个文件。
编辑1:截至24.2.1,上述情况仍然如此
在这种情况下,我的最佳解决方案是扩展SwipeRefreshLayout并在那里设置颜色,然后在需要时在xml或代码中使用此类。
public class ColoredSwipeRefreshLayout extends SwipeRefreshLayout {
public ColoredSwipeRefreshLayout(@NonNull Context context) {
super(context);
setColors();
}
public ColoredSwipeRefreshLayout(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
setColors();
}
private void setColors() {
setColorSchemeColors(
ContextCompat.getColor(getContext(), R.color.blue_main),
ContextCompat.getColor(getContext(), R.color.blue_accent),
ContextCompat.getColor(getContext(), R.color.blue_dark));
}
}