Я пытаюсь создать закругленные углы в MapView, и, поскольку, по-видимому, по умолчанию не существует способа сделать это, я в основном накладываю макет с фоном поверх вида карты, например, так:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" >
<RelativeLayout
android:id="@+id/map_holder"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@drawable/panel_rounded_corner_transparent" />
</RelativeLayout>
Мой рисованный закругленный угол определяется следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/bg_rounded_corner_transparent" />
</selector>
и отрисовка внутри определяется как:
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid
android:color="@color/transparent" />
<stroke
android:width="1dp"
android:color="@color/darkgray" />
<corners
android:radius="5dp" />
</shape>
</item>
</layer-list>
Однако проблема в том, что, поскольку карта заканчивается прямоугольником, а граница закруглена, углы карты выглядывают из-за углов моей временной границы. Как установить цвет фона только для внешней границы, сохраняя прозрачность внутренней части панели?
Для пояснения, вот несколько скриншотов.
Этот снимок экрана показывает карту как изначально "ограниченную" наложенной границей:
Этот снимок экрана заменяет карту красным фоном, чтобы лучше понять, в чем проблема:
Как видите, красный цвет (и, соответственно, карта) кровоточит за пределами границы.
Я могу добавить 1dp отступ на карту, но это не решает полностью проблему, как вы можете видеть здесь:
Так как углы закруглены, часть карты все еще просачивается. Это намного лучше, чем первый вариант, но не идеально - по углам 1 пиксель.
Как показано на этом скриншоте, заполнение более 1 dp не является решением, поскольку оно полностью создает другую проблему: