无法在InfoWindowAdapter中设置textview值

时间:2016-01-14 22:11:16

标签: android google-maps android-layout google-maps-markers

我正在尝试使用以下代码创建自定义信息窗口。

内部活动:

mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
private final View contents = getLayoutInflater().inflate(R.layout.infowindow, null);

    @Override
    public View getInfoWindow(Marker marker) {
         return null;
               }

    @Override
    public View getInfoContents(Marker marker) {
        TextView txtTitle = ((TextView) contents.findViewById(R.id.txtInfoWindowTitle));
        txtTitle.setText("teste");
        return contents;
                    }
                });

为所有标记创建infowindow并且布局文件是正确的,但txtInfoWindowTitle始终为空,即使使用infowindow.xml布局文件中定义的默认值

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:gravity="center_vertical|center_horizontal">

        <TextView
            android:id="@+id/txtInfoWindowTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:ellipsize="end"
            android:singleLine="true"
            android:textColor="#ff000000"
            android:textSize="14dp"
            android:textStyle="bold"
            android:text="primeira linha"
            android:gravity="center_vertical|center_horizontal" />

        <TextView

            android:id="@+id/txtInfoWindowClick"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:singleLine="true"
            android:textColor="#ff7f7f7f"
            android:textSize="14dp"
            android:text="toque para abrir a ficha" />

</LinearLayout>

1 个答案:

答案 0 :(得分:3)

此代码适用于我

View contents;

@Override
public View getInfoContents(Marker marker) {
    if(contents==null) {
        contents = getActivity().getLayoutInflater()
                .inflate(
                        R.layout.info_content,
                        null);
    }
    TextView txtTitle = (TextView) contents.findViewById(R.id.txtInfoWindowTitle);
    txtTitle.setText("teste");
        return contents;
    }

你的LinearLayout在另一个布局中?