<RelativeLayout android:id="@+id/poi_list_container" android:layout_width="360dp" android:layout_height="wrap_content" android:background="@drawable/bg_list_circular" android:visibility="gone"> <ListView android:id="@+id/poi_list" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="none" /> </RelativeLayout> <RelativeLayout android:id="@+id/search_map_relative" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="3"> <com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" android:focusable="true" /> </RelativeLayout> 这个布局,当poi_list_container隐藏时,让search_map_relative放在右侧,位置不动,不要让search_map_relative铺满
时间: 2024-03-27 15:39:18 浏览: 25
可以在`poi_list_container`隐藏时,动态设置`search_map_relative`的布局参数,将其`layout_weight`设置为`0`,这样就不会占据剩余空间,再将其`layout_width`设置为固定值`360dp`,这样就可以保证其位置不动且不会铺满整个屏幕。
具体实现可以参考以下代码:
```
// 隐藏poi_list_container时,将search_map_relative的布局参数动态设置
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) search_map_relative.getLayoutParams();
layoutParams.weight = 0;
layoutParams.width = getResources().getDimensionPixelSize(R.dimen.map_container_width); // 设置为360dp
```
其中,`R.dimen.map_container_width`是一个在dimens.xml中定义的固定值,可以根据具体需求进行调整。
相关问题
<RelativeLayout android:id="@+id/poi_list_container" android:layout_width="360dp" android:layout_height="wrap_content" android:background="@drawable/bg_list_circular" android:visibility="gone"> <ListView android:id="@+id/poi_list" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="none" /> </RelativeLayout> <!-- <RelativeLayout--> <!-- android:layout_width="0dp"--> <!-- android:layout_height="match_parent"--> <!-- android:layout_weight="3">--> <com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" android:focusable="true" android:hardwareAccelerated="true" /> 帮我把这个listview写在mapview的上面
可以使用 FrameLayout 来实现将 ListView 放在 MapView 上方。代码如下:
```
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:focusable="true"
android:hardwareAccelerated="true" />
<RelativeLayout
android:id="@+id/poi_list_container"
android:layout_width="360dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_list_circular"
android:visibility="gone">
<ListView
android:id="@+id/poi_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none" />
</RelativeLayout>
</FrameLayout>
```
这样就可以将 ListView 放在 MapView 上方了。注意,这里使用了 FrameLayout 来实现,因为它可以让子 View 叠加在一起。同时,ListView 的高度设置为 match_parent,让它充满整个父容器,以便完全覆盖在 MapView 上方。
在安卓中的一个layout中,写了一个listview和一个百度地图的MapView,其中listview先隐藏掉,从别的地方来到这个Activity中去搜索poi后,拿到数据才显示这个listview,然后点击条目去跳转到另一个Activity,跳转的同时把listview隐藏,这个时候,在屏幕的右侧会有一个listview大小的黑屏,是怎么回事?代码如下:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/poi_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:baselineAligned="false" android:orientation="horizontal"> <RelativeLayout android:id="@+id/poi_list_container" android:layout_width="360dp" android:layout_height="wrap_content" android:background="@drawable/bg_list_circular" android:visibility="gone"> <ListView android:id="@+id/poi_list" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="none" /> </RelativeLayout> <RelativeLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="3"> <com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" android:focusable="true" /> </RelativeLayout> </LinearLayout>
这个问题可能是由于ListView的高度设置为match_parent引起的。当ListView被隐藏时,它的高度为0,但是它的父容器RelativeLayout的高度仍然为wrap_content。因此,RelativeLayout会显示一个空白区域,大小等于ListView的高度。解决办法是将ListView的高度设置为wrap_content,这样当它被隐藏时,它的高度将为0,RelativeLayout也会跟着缩小。修改代码如下:
```
<ListView
android:id="@+id/poi_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none" />
```