【问题标题】:Dynamically increase the size of custom marker in google maps动态增加谷歌地图中自定义标记的大小
【发布时间】:2015-10-19 19:51:11
【问题描述】:

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

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>

【问题讨论】:

  • 如何设置xml中的layoutparams?也许有体重?
  • 请检查我的自定义标记 XML

标签: android google-maps google-maps-markers


【解决方案1】:

imgView.getLayoutParams().height = 200;

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

您可以使用当前的方法来放大图像,例如

int height = imgView.getLayoutParams().height;
imgView.getLayoutParams().height = height * 2;

使它们大 2 倍。无论设备的像素密度如何,都不会将图像设为硬编码 200 像素,而是将图像设为 140 像素(如果它是 70 像素)或 200 像素(如果它是 100 像素)。
这将很好地适应当前设备。

您也可以使用 dp,方法是指定一个 dp 值,然后将其转换为像素:

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

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

【讨论】:

    猜你喜欢
    • 2016-07-14
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    相关资源
    最近更新 更多