Android 动态增加谷歌地图中自定义标记的大小

Android 动态增加谷歌地图中自定义标记的大小,android,google-maps,google-maps-markers,Android,Google Maps,Google Maps Markers,在我的谷歌地图应用程序中,我为不同的位置使用自定义标记。我成功地实现了这一点,但我需要动态地增加自定义标记的大小。我使用了以下代码 imgView.getLayoutParams().height = 200; imgView.getLayoutParams().width = 200; 这些代码在某些设备中运行良好,但在nexus4和5中,标记非常大。请帮我解决这个问题 自定义标记XMl <?xml version="1.0" encoding="utf-8"?> <Rel

在我的谷歌地图应用程序中,我为不同的位置使用自定义标记。我成功地实现了这一点,但我需要动态地增加自定义标记的大小。我使用了以下代码

imgView.getLayoutParams().height = 200;
imgView.getLayoutParams().width = 200;
这些代码在某些设备中运行良好,但在nexus4和5中,标记非常大。请帮我解决这个问题

自定义标记XMl

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <ImageView     
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:src="@drawable/marker" />

    <TextView           
        android:layout_width="36dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="3dp"
        android:gravity="center"
        android:textColor="#FFFFFF"
        android:textSize="14sp"
        android:textStyle="bold" />

</RelativeLayout>

您正在指定以像素为单位的新高度,忽略当前设备的像素密度。你不应该这样做

您可以使用当前方法放大图像,方法如下:

int height = imgView.getLayoutParams().height;
imgView.getLayoutParams().height = height * 2;
让它们变大2倍。无论设备的像素密度如何,这都不会使图像成为硬编码的200px,而是使图像成为140px(如果是70px),或200px(如果是100px)。 这将很好地适应当前设备

您还可以通过指定dp值,然后将其转换为像素来使用dp:

int dp = 72;
int height = imgView.getLayoutParams().height;
imgView.getLayoutParams().height = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics());

这将通过将72转换为当前设备的适当像素量,将高度设置为72。

如何在xml中设置layoutparams?可能有重量吗?请检查我的自定义标记XML
int dp = 72;
int height = imgView.getLayoutParams().height;
imgView.getLayoutParams().height = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics());