アクション バーを設定し、最初のタブにマップを表示しています。ユーザーがマップ上を移動できるように、最初のタブでスクロールを無効にしました。ユーザーが 2 番目のタブを押すと、地図の形をした大きな黒い四角と、前の地図の小さな断片があふれています。
ここに写真があります。スクリーンショットを撮るたびに何らかの理由で黒が消えてしまったので、2枚目は手動で撮らなければなりませんでした.
最初のタブのコード
public static class Map extends Fragment {
MapView mapView;
GoogleMap map;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.maptab, container, false);
// Gets the MapView from the XML layout and creates it
mapView = (MapView) v.findViewById(R.id.mapview);
mapView.onCreate(savedInstanceState);
// Gets to GoogleMap from the MapView and does initialization stuff
map = mapView.getMap();
//map.getUiSettings().setMyLocationButtonEnabled(false);
//map.setMyLocationEnabled(true);
map.addMarker(new MarkerOptions().position(new LatLng(50.167003,19.383262)));
// Needs to call MapsInitializer before doing any CameraUpdateFactory calls
try {
MapsInitializer.initialize(this.getActivity());
} catch (GooglePlayServicesNotAvailableException e) {
e.printStackTrace();
}
// Updates the location and zoom of the MapView
//CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(new LatLng(43.1, -87.9), 10);
//map.animateCamera(cameraUpdate);
return v;
}
@Override
public void onResume() {
mapView.onResume();
super.onResume();
}
@Override
public void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
@Override
public void onLowMemory() {
super.onLowMemory();
mapView.onLowMemory();
}
}
XML ファイル maptab.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.gms.maps.MapView
android:id="@+id/mapview"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</com.google.android.gms.maps.MapView>
</LinearLayout>
ハックソリューションこれを解決する他の方法が考えられるかどうか教えてください
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
// When the given tab is selected, switch to the corresponding page in the ViewPager.
if(tab.getPosition() == 1){ //If it is the tab next to the map tab, set map invisible
mapView.setVisibility(View.INVISIBLE);
} else if(tab.getPosition() == 0 && mapView != null){ //If the map tab is clicked and the map is not null, set map to visible
mapView.setVisibility(View.VISIBLE);
}
mViewPager.setCurrentItem(tab.getPosition());
}