ara*_*aks 686 android android-resources android-mnc android-6.0-marshmallow
该Resources.getColor(int id)
方法已被弃用.
@ColorInt
@Deprecated
public int getColor(@ColorRes int id) throws NotFoundException {
return getColor(id, null);
}
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
ara*_*aks 1310
从Android支持库23开始,添加
了一个新的getColor()方法ContextCompat
.
它来自官方JavaDoc的描述:
返回与特定资源ID关联的颜色
从M开始,返回的颜色将针对指定的Context主题设置样式.
所以,请致电:
ContextCompat.getColor(context, R.color.your_color);
Run Code Online (Sandbox Code Playgroud)
您可以ContextCompat.getColor()
在GitHub上查看源代码.
Mel*_*vin 488
TL;博士:
ContextCompat.getColor(context, R.color.my_color)
Run Code Online (Sandbox Code Playgroud)
说明:
您将需要使用ContextCompat.getColor(),它是Support V4库的一部分(它适用于所有以前的API).
ContextCompat.getColor(context, R.color.my_color)
Run Code Online (Sandbox Code Playgroud)
如果您尚未使用支持库,则需要将以下行添加到dependencies
应用程序内的数组中build.gradle
(注意:如果您已经使用了appcompat(V7)库,则它是可选的):
compile 'com.android.support:support-v4:23.0.0' # or any version above
Run Code Online (Sandbox Code Playgroud)
如果您关心主题,则文档指定:
从M开始,返回的颜色将针对指定的Context主题设置样式
Ale*_*ang 42
我不想仅为getColor包含支持库,所以我使用的是类似的东西
public static int getColorWrapper(Context context, int id) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return context.getColor(id);
} else {
//noinspection deprecation
return context.getResources().getColor(id);
}
}
Run Code Online (Sandbox Code Playgroud)
我想代码应该可以正常工作,并且不推荐使用的getColor
API不能从API <23中消失.
Ash*_*jan 28
在Android Marshmallow中,许多方法都已弃用.
例如,获得颜色使用
ContextCompat.getColor(context, R.color.color_name);
Run Code Online (Sandbox Code Playgroud)
也是为了获得可绘制的用途
ContextCompat.getDrawable(context, R.drawable.drawble_name);
Run Code Online (Sandbox Code Playgroud)
Spi*_*pau 27
对于那里的所有Kotlin用户:
context?.let {
val color = ContextCompat.getColor(it, R.color.colorPrimary)
// ...
}
Run Code Online (Sandbox Code Playgroud)
Tar*_*ora 17
对于Drawable
ContextCompat.getDrawable(getApplicationContext(),R.drawable.back_arrow)
Run Code Online (Sandbox Code Playgroud)
对于颜色
ContextCompat.getColor(getApplicationContext(),R.color.red)
Run Code Online (Sandbox Code Playgroud)
您可以使用:
if (Build.VERSION.SDK_INT >= 23) {
return ctx.getColor(R.color.YOURCOLOR);
} else {
return ctx.getRecources().getColor(R.color.YOURCOLOR);
}
Run Code Online (Sandbox Code Playgroud)
在Android Marshmallow上测试过.有效.
具有多API支持的代码:
if (Build.VERSION.SDK_INT < 23) {
view.setBackgroundColor(getResources().getColor(android.R.color.white));
} else {
view.setBackgroundColor(getContext().getColor(android.R.color.white));
}
Run Code Online (Sandbox Code Playgroud)
在 Kotlin 中,您可以执行以下操作:
ContextCompat.getColor(requireContext(), R.color.stage_hls_fallback_snackbar)
Run Code Online (Sandbox Code Playgroud)
如果可以从调用函数的位置访问 requireContext()。我在尝试时遇到错误
ContextCompat.getColor(context, R.color.stage_hls_fallback_snackbar)
Run Code Online (Sandbox Code Playgroud)
最简短的答案是:
ContextCompat.getColor(context, R.color.colorAccent);
Run Code Online (Sandbox Code Playgroud)
小智 7
在API 23中不推荐使用getColor()方法,它是在ContextCompat中引入的.在使用ContextCompat使用getColor()方法之前,在build.gradle脚本中添加依赖项,即:
dependencies{
// Other stuff
compile 'com.android.support:support-v4:23.0.0'
}
Run Code Online (Sandbox Code Playgroud)
然后可以使用getColor()方法,如:
int colorcode = ContextCompat.getColor(getApplicationContext(), R.color.your_color);
Run Code Online (Sandbox Code Playgroud)
在活动中使用 ContextCompat
ContextCompat.getColor(context, R.color.color_name)
Run Code Online (Sandbox Code Playgroud)
在阿达珀
private Context context;
context.getResources().getColor()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
267257 次 |
最近记录: |