我只想以编程方式设置contentScrim。所以我尝试了
int color = ContextCompat.getColor(getActivity(), R.attr.colorPrimary);
collapsingToolbarLayout.setContentScrimColor(color);
然后我尝试
collapsingToolbarLayout.setContentScrimColor(
getResources().getColor(R.attr.colorPrimary));
但是我不断收到有关
R.attr.colorPrimary
的投诉。有什么帮助吗?似乎有人问过这个问题Android - Should pass resolved color instead of resource id here: `getResources().getColor(R.attr.colorPrimary)`。但是我尝试的正是他们建议我尝试的方法。我的目标是minSDK 16。
顺便说一句,我不能使用
R.color.colorPrimary
,因为我想要动态设置的主题而不是一些硬编码/默认颜色。 最佳答案
public int getColor(Context context, int colorResId) {
//return ContextCompat.getColor(context, colorResId); // Doesn't seem to work for R.attr.colorPrimary
TypedValue typedValue = new TypedValue();
TypedArray typedArray = context.obtainStyledAttributes(typedValue.data, new int[] {colorResId});
int color = typedArray.getColor(0, 0);
typedArray.recycle();
return color;
}
用法:
int actualPrimaryColor = getColor(context, R.attr.colorPrimary);