我在地图上创建了标记。当我点击它们时,自定义信息窗口总是和屏幕一样宽。
我尝试设置layout_width="200dp"
,但这没有帮助。我也尝试过设置
view.setLayoutParams(new LayoutParams(GetDipsFromPixel(200), GetDipsFromPixel(300)));
我可以通过设置snippetUi.setWidth(GetDipsFromPixel(200));
来设置textviews的宽度,但布局仍然是屏幕范围。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="#FFFFFF"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:padding="10dp" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#FFFFFF"
android:gravity="center_vertical">
<ImageView
android:id="@+id/worldmap_infowindow_profileimg"
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@drawable/noimage" />
<TextView
android:id="@+id/worldmap_infowindow_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="To do No.2."
android:textColor="#000000"
android:textSize="16sp"
android:textStyle="bold"
android:paddingLeft="5dp"/>
</LinearLayout>
<View android:id="@+id/separator"
android:background="#ababab"
android:layout_width = "fill_parent"
android:layout_marginTop="3dp"
android:layout_marginBottom="3dp"
android:layout_height="1dp"/>
<TextView
android:id="@+id/worldmap_infowindow_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="See the Giza Pyramids"
android:textColor="#000000"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/worldmap_infowindow_details"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="It was fascinating! It's a shame that it was raining, though."
android:textColor="#000000"
android:textSize="14sp"
android:textStyle="normal" />
</LinearLayout>
类别:
private class CustomInfoWindowAdapter implements InfoWindowAdapter {
private View view;
public CustomInfoWindowAdapter() {
view = getLayoutInflater().inflate(R.layout.custom_infowindow, null);
}
@Override
public View getInfoContents(Marker marker) {
if (WorldMap.this.myMarker != null
&& WorldMap.this.myMarker.isInfoWindowShown()) {
WorldMap.this.myMarker.hideInfoWindow();
WorldMap.this.myMarker.showInfoWindow();
}
return null;
}
@Override
public View getInfoWindow(final Marker marker) {
WorldMap.this.myMarker = marker;
final String title = marker.getTitle();
final TextView titleUi = ((TextView) view.findViewById(R.id.worldmap_infowindow_name));
if (title != null) {
titleUi.setText(title);
} else {
titleUi.setText("");
}
final String snippet = marker.getSnippet();
final TextView snippetUi = ((TextView) view.findViewById(R.id.worldmap_infowindow_details));
if (snippet != null) {
snippetUi.setText(snippet);
} else {
snippetUi.setText("");
}
return view;
}
}
答案 0 :(得分:48)
基本上你只需要在root下面有另一个级别的布局,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:background="@android:color/transparent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="250dp"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:orientation="horizontal">
...
答案 1 :(得分:6)
如果要显示固定大小(高度或宽度)的自定义窗口,则必须创建drawable并将其设置为XML背景。
我已将答案HERE与解决方案一起发布。您可以参考其工作原理。
答案 2 :(得分:4)
使用&#34; wrap_content&#34;创建父布局以及具有所需大小的子布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- This layout defines the desired size -->
<LinearLayout
android:layout_width="240dp"
android:layout_height="320dp"
android:orientation="vertical">
<!-- Your views here -->
</LinearLayout>
</LinearLayout>
答案 3 :(得分:2)
@Override
public View getInfoWindow(Marker arg0) {
return null;
}
@Override
public View getInfoContents(Marker arg0) {
View v = getActivity().getLayoutInflater().inflate(R.layout.custom_info_window, null);
v.setLayoutParams(new LinearLayout.LayoutParams(500,300));
}
答案 4 :(得分:1)
在我的情况下,我设置了布局的一个子的固定宽度,并且它工作。设置根视图的宽度时,不知道为什么它不起作用。这是一个例子:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/white"
android:orientation="vertical"
android:padding="3dp">
<ImageView
android:id="@+id/info_window_image"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:src="@drawable/facebook"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="1"
android:maxLines="1"
android:singleLine="true"
android:text="Free for All Soccer Game"
android:textColor="@color/blue"
android:textSize="@dimen/medium" />
</LinearLayout
&GT;