资源。getColor(int id)方法已弃用。
@ColorInt
@Deprecated
public int getColor(@ColorRes int id) throws NotFoundException {
return getColor(id, null);
}
我该怎么办?
资源。getColor(int id)方法已弃用。
@ColorInt
@Deprecated
public int getColor(@ColorRes int id) throws NotFoundException {
return getColor(id, null);
}
我该怎么办?
当前回答
从Android支持库23开始, ContextCompat中添加了一个新的getColor()方法。
它在官方JavaDoc中的描述:
返回与特定资源ID相关联的颜色 从M开始,返回的颜色将为指定上下文的主题设置样式。
所以,只需调用:
ContextCompat.getColor(context, R.color.your_color);
你可以在GitHub上查看ContextCompat.getColor()源代码。
其他回答
在Kotlin中的RecyclerView中
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(t: YourObject, listener: OnItemClickListener.YourObjectListener) = with(itemView) {
textViewcolor.setTextColor(ContextCompat.getColor(itemView.context, R.color.colorPrimary))
textViewcolor.text = t.name
}
}
从Android支持库23开始, ContextCompat中添加了一个新的getColor()方法。
它在官方JavaDoc中的描述:
返回与特定资源ID相关联的颜色 从M开始,返回的颜色将为指定上下文的主题设置样式。
所以,只需调用:
ContextCompat.getColor(context, R.color.your_color);
你可以在GitHub上查看ContextCompat.getColor()源代码。
getColor(int):此方法在API级别23中已弃用。 使用getColor(int, android.content.res.Resources.Theme)代替。
我尝试minSDK = 21:
if(Build.VERSION.SDK_INT < 23) {
resources.getColor(R.color.rippelColor, null)
} else {
resources.getColor(R.color.rippelColor)
}
来自developer.android.com的官方参考
tl; diana:
ContextCompat.getColor(context, R.color.my_color)
解释:
您将需要使用ContextCompat.getColor(),它是Support V4库的一部分(它将适用于前面的所有api)。
ContextCompat.getColor(context, R.color.my_color)
如果你还没有使用支持库,你将需要添加以下一行到你的应用程序构建中的依赖数组。gradle(注意:如果你已经使用了appcompat (V7)库,它是可选的):
compile 'com.android.support:support-v4:23.0.0' # or any version above
如果你关心主题,文档指定:
从M开始,返回的颜色将为指定的样式 上下文的主题
对于所有的Kotlin用户:
context?.let {
val color = ContextCompat.getColor(it, R.color.colorPrimary)
// ...
}