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());