<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 17:39:18 浏览: 54
可以在`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中定义的固定值,可以根据具体需求进行调整。
相关问题
布局是这么写的 <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>
那么你可以在RelativeLayout隐藏时,手动设置mapview的左边距为0,这样可以保证mapview填充整个父容器,不会出现黑屏的情况。具体代码如下:
```
relativeLayout.setVisibility(View.GONE);
// 将mapview的左边距设置为0
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mapView.getLayoutParams();
params.weight = 3;
params.width = 0;
mapView.setLayoutParams(params);
```
你需要将上述代码放到隐藏RelativeLayout的地方,这样就可以保证在RelativeLayout隐藏后,mapview会自动填充整个父容器,不会出现黑屏的情况。
阅读全文