具有自定义视图的IconGenerator,删除填充或边距

时间:2017-06-06 14:19:05

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

我正在努力创造这个:

enter image description here

但不幸的是,我只能得到这个 enter image description here

这个问题不是关于阴影或字体,我可以很容易地调整那些我猜。令我发疯的是删除蓝线和标记边缘之间的边距(或填充)。

相关代码是:

在扩展DefaultClusterRenderer的ClusterRenderer

@Override
protected void onBeforeClusterItemRendered(MyItem item, MarkerOptions markerOptions) {
    markerOptions.
            icon(BitmapDescriptorFactory.fromBitmap(prepareIcon(item))).
            position(new LatLng(item.getPosition().latitude, item.getPosition().longitude)).
            anchor(iconGenerator.getAnchorU(), iconGenerator.getAnchorV());

    super.onBeforeClusterItemRendered(item, markerOptions);
}

private Bitmap prepareIcon(MyItem item) {
    markerDecoratorView.setPrice(getPriceSpannedText(item.getPrice()));
    iconGenerator.setContentView(markerDecoratorView);
    iconGenerator.setContentPadding(-2, -2, -2, 0); // This does not make any difference
    return iconGenerator.makeIcon();
}

自定义视图

public class MarkerDecoratorView extends LinearLayout {

@Bind(R.id.marker_item_price)
TextView markerItemPrice;

public MarkerDecoratorView(Context context) {
    super(context);
    init(context);
}

public MarkerDecoratorView(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
    init(context);
}

public MarkerDecoratorView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    init(context);
}

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public MarkerDecoratorView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);
    init(context);
}

private void init(Context context) {
    inflate(context, R.layout.map_marker_view, this);
    this.setOrientation(VERTICAL);
    if (isInEditMode()) return;
    ButterKnife.bind(this);
}

public void setPrice(SpannableString text) {
    markerItemPrice.setText(text);
}

public void setPrice(String text) {
    markerItemPrice.setText(text);
}   }
} 

视图布局为:

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<View
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:background="@color/tab_indicator" />

<TextView
    android:id="@+id/marker_item_price"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="@style/MapMarker"
    android:gravity="center"
    android:padding="4dp"
    tools:text="SAR 300" />
</merge>
编辑:我也尝试在自定义视图(xml和类)中使用9patch。它适用于Android Studio预览,但不在标记内。

编辑2:我通过添加常规图标,没有9patch来解决这个问题。我保持这个问题是开放的,因为这个话题可能与其他人有关。所以,如果有人有解决方案,请发布! :)

0 个答案:

没有答案