答案 0 :(得分:2)
您的问题是由颜色资源标识符和颜色值之间的混淆引起的,两者都是int
s。
让我们来看看the documentation for PolylineOptions.color()
:
public PolylineOptions color (int color)
将折线的颜色设置为32位ARGB颜色。默认颜色为黑色(
0xff000000
)。
由于文档声明输入应该是" 32位ARGB颜色",您不能只传递颜色资源ID;您必须先手动将其解析为颜色值。
R.color.colorPrimary
是int
,其中包含一些自动生成的值,可能类似于0x7f050042
。不幸的是,这可以解释为ARGB颜色,并且是部分透明的,极深蓝色。因此,应用程序不会崩溃,您只需在折线上获得意想不到的颜色。
要获得正确的颜色,请使用ContextCompat.getColor()
将颜色资源ID解析为颜色值,然后将颜色值传递给color()
方法:
Context c = /* some context here */
int colorPrimary = ContextCompat.getColor(c, R.color.colorPrimary);
rectOptions.color(colorPrimary);
答案 1 :(得分:0)
您还可以使用预定义的Java“ Color”类来获取一些标准颜色并将其传递给地图。
例如
PolylineOptions rectOptions = new PolylineOptions();
<p>rectOptions.color(Color.BLUE);</p>