我正在努力创造这个:
这个问题不是关于阴影或字体,我可以很容易地调整那些我猜。令我发疯的是删除蓝线和标记边缘之间的边距(或填充)。
相关代码是:
在扩展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来解决这个问题。我保持这个问题是开放的,因为这个话题可能与其他人有关。所以,如果有人有解决方案,请发布! :)