MapView中的按钮不可见

时间:2017-07-10 20:36:47

标签: java android

我在MapView中的按钮可见性方面遇到了问题。

布局:

<com.google.android.gms.maps.MapView
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="UPDATE DATA"
        android:layout_gravity="center_horizontal"
        android:id="@+id/updateMarkers"/>

</com.google.android.gms.maps.MapView>

初始化按钮( updateDataButton )时,如下所示  (在初始化mapView之后)我得到NullPointerException - button为null。

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState){
    View view = inflater.inflate(R.layout.graph_fragment, container, false);

    try {
        MapsInitializer.initialize(getActivity().getApplicationContext());
    } catch (Exception e) {
        e.printStackTrace();
    }

    mapView = (MapView) view.findViewById(R.id.map);
    mapView.onCreate(savedInstanceState);
    mapView.onResume();

    updateDataButton = (Button) view.findViewById(R.id.updateMarkers);
    updateDataButton.setVisibility(View.VISIBLE);

    googleApiClient = new GoogleApiClient.Builder(getContext())
            .enableAutoManage(getActivity(), this)
            .addConnectionCallbacks(this)
            .addApi(LocationServices.API)
            .addApi(Places.GEO_DATA_API)
            .addApi(Places.PLACE_DETECTION_API)
            .build();

    googleApiClient.connect();

    return view;
}

但是当我在初始化mapView之前初始化按钮时,Everythings似乎没问题,但按钮没有显示。 你知道如何在我的情况下正确显示按钮吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试过这种方式:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.ad3luc.maps.AMain"
    tools:showIn="@layout/activity_main">

    <com.google.android.gms.maps.MapView
        android:id="@+id/map_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentStart="true"
        android:text="Button"/>
</RelativeLayout>

使用 RelativeLayout 并在布局中放置 MapView 按钮小部件。 我没有使用地图的api密钥,但按钮显示在 MapView 小部件上没有问题。