解决方案是我之前致电zOrderOnTop(true)
以解决black flickering bug问题。面对这一事件,我猜上面提到的错误不目前有一个有效的解决方法。我也尝试了线程中的其他建议,但是没有一个在不影响应用程序的情况下工作
在我的应用程序中,我想显示一个嵌套在另一个片段中的地图片段,这对于最新的API和支持库来说并不是太大的问题。但地图显示了一些奇怪的行为:
您可能已经注意到没有按钮可见。用于缩放的plus
和minus
按钮,例如。但是myLocation
按钮似乎也消失了。有趣的是:当我点击右上角或右下角的屏幕(您可能知道它们应该在哪里)时,该应用程序完全符合您的预期!
由于我只是与the android maps api documentation tutorial并肩工作,我不认为这是设置可见内容的问题。 我更倾向于认为这与我展示片段的方式有关,某些层似乎妨碍了。我该如何解决这个问题?
也许有人可以发现我的错误,我会非常感激!
HostFragment
public class HostFragment extends Fragment {
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ViewGroup res = (ViewGroup) inflater.inflate(R.layout.fragment_map, null);
// Build the MapFragment as a nested fragment into this one
mMapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentByTag(MAP);
if (mMapFragment == null) {
mMapFragment = SupportMapFragment.newInstance(mMapOptions);
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.mapContainer, mMapFragment, MAP).commit();
}
// We can't be guaranteed that the map is available because Google Play services might not
// be available. We'll check this again later on
setUpMapIfNeeded();
return res;
}
@Override
public void onResume() {
super.onResume();
// Verify that the map is set up before presenting it to the user
setUpMapIfNeeded();
}
private void setUpMapIfNeeded() {
// Do a null check to confirm that we haven't already instantiated the map.
if (mMap == null) {
// Try to obtain the map from the MapFragment.
mMap = mMapFragment.getMap();
// Check if we were successful in obtaining the map.
if (mMap != null) {
setUpMap();
}
else {
LOG.debug("Map is null");
}
}
}
/**
* Sets the parameters for the map that will be displayed to the user
*/
private void setUpMap() {
mMap.setMyLocationEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(true);
mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
}
}
主机布局xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapContainer"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</RelativeLayout>
祝你好运
更新
1:使用FrameLayout而不是RelativeLayout 不解决问题
2:明确地将地图类型设置为NORMAL 不解决问题
答案 0 :(得分:2)
尝试修改setUpMap()
,如下所示:
private void setUpMap() {
mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); //added line
mMap.setMyLocationEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(true); //my code did not have these and still be able to display the zoom in, zoom out, and my location button
mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
}
祝你好运!
答案 1 :(得分:1)
您使用的是zOrderOnTop吗?在这种情况下,你不会看到按钮。更多信息:https://developers.google.com/maps/documentation/android/map?hl=pl#using_xml_attributes
答案 2 :(得分:0)
您是否在具有不同API的不同设备上进行了测试? 2.x ... 4.x? 我遇到了同样的问题,所以你必须开发自己的按钮。
答案 3 :(得分:0)
请查看此文档。你肯定错过激活缩放控件;)