我在片段中使用MapView。这个视图目前受到几个外围视图的限制(如TextView,Buttons等)。
我想要的是在划分的MapView之外的区域中显示我的地图而不扩展MapView的边界。这可能吗?如果是,那怎么办?编辑:目前它看起来像这样 - [蓝色边界条表示MapView的限制] [1]
[1]:https://i.stack.imgur.com/9AzqX.png
我希望地图填充下面的区域&在按钮的一侧,没有扩展MapView的边界,而不是它当前的边界。布局代码:`
<Button
android:id="@+id/rideButton"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="20dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:background="#ffffff"
android:elevation="1dp"
android:text="Button"
android:textSize="@dimen/font_medium" />
<RelativeLayout
android:id="@+id/mapWrapper"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/textWrapper"
android:layout_above="@+id/rideButton">
<com.google.android.gms.maps.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:visibility="visible"
android:background="@color/white"/>
<LinearLayout
android:id="@+id/posReference"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="false"
android:layout_alignParentStart="true"
android:layout_centerInParent="true"
android:orientation="horizontal"></LinearLayout>
<ImageView
android:layout_width="18dp"
android:layout_height="26dp"
android:id="@+id/centerMarker"
android:src="@drawable/ic_marker"
android:layout_above="@+id/posReference"
android:layout_centerHorizontal="true" />
</RelativeLayout>
<TableLayout
android:id="@+id/textWrapper"
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:background="@color/colorAccent"
android:paddingBottom="15dp"
android:paddingLeft="25dp"
android:paddingRight="25dp"
android:paddingTop="15dp">
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:text="TextView 1"
android:textAppearance="@style/Bold"
android:textColor="#ffffff"
android:textSize="@dimen/font_small" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/srcFrag"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginTop="15dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView"
android:layout_width="12dp"
android:layout_height="12dp"
android:layout_alignParentBottom="false"
android:layout_alignParentLeft="false"
android:layout_alignParentTop="true"
android:layout_marginLeft="5dp"
android:src="@drawable/ic_location"
android:tint="@color/white" />
<TextView
android:id="@+id/short_map_place"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="10dp"
android:layout_toEndOf="@+id/imageView"
android:layout_toRightOf="@+id/imageView"
android:ellipsize="end"
android:text="TextView 2"
android:textAppearance="@style/Light"
android:textColor="#ffffff"
android:textSize="@dimen/font_small" />
ImageView
android:id="@+id/imageView2"
android:layout_width="12dp"
android:layout_height="12dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_marginLeft="5dp"
android:src="@drawable/ic_location"
android:tint="@color/white" />
</RelativeLayout>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="347dp"
android:layout_height="1dp"
android:layout_marginTop="0dp"
android:background="#ffffff"
android:foreground="#ffffff"
android:orientation="vertical">
</LinearLayout>
</TableRow>
</TableLayout>
`
答案 0 :(得分:0)
使用FrameLayout
实施例 -
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The main content -->
<com.google.android.gms.maps.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- "Loaded" flash bar layout -->
<FrameLayout
android:id="@+id/FlashBarLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="72dp">
<!-- flash bar content -->
</FrameLayout>
<!-- Last loaded time layout -->
<TextView
android:id="@+id/UpdateTimeText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|right"
android:layout_marginTop="4dp"
android:layout_marginRight="4dp" /></FrameLayout>
答案 1 :(得分:0)
你想要的是在MapView中加入“填充”。 使用框架布局的建议是正确的(否则您无法在地图的物理边界之外扩展地图)。
除此之外,您还需要设置一个“地图填充”,以便在进行缩放等时减少视图区域...
https://developers.google.com/maps/documentation/android-api/map#map_padding
我给你带有文档的URL而没有代码,因为.setPadding函数需要像素(注意!)所以你必须检查不同的设备和密度,以填充多少像素。
您可以为顶部,左侧,右侧和底部设置不同的填充。