PolylineOptions .color()不起作用

时间:2018-03-04 16:13:43

标签: android google-maps-android-api-2 android-maps-v2 polyline polylineoptions

我尝试使用以下代码在地图的折线上设置红色:

{{1}}

但是它不能正常工作,而不是显示我的应用程序的primaryColour是红色的,而是显示带有某些alpha的暗色。

我按照官方指南:here

2 个答案:

答案 0 :(得分:2)

您的问题是由颜色资源标识符颜色值之间的混淆引起的,两者都是int s。

让我们来看看the documentation for PolylineOptions.color()

  

public PolylineOptions color (int color)

     

将折线的颜色设置为32位ARGB颜色。默认颜色为黑色(0xff000000)。

由于文档声明输入应该是" 32位ARGB颜色",您不能只传递颜色资源ID;您必须先手动将其解析为颜色值。

R.color.colorPrimaryint,其中包含一些自动生成的值,可能类似于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>