解决方案:
解决方案是我之前打电话zOrderOnTop(true)
来解决黑色闪烁的错误。面对如此多的事件,我猜上述错误目前还没有有效的解决方法。我也尝试了线程中的其他建议,但它们都不能在不损害应用程序的情况下工作
原始问题:
在我的应用程序中,我想显示一个嵌套在另一个片段中的地图片段,这对于最新的 API 和支持库来说并不是太大的麻烦。但是地图显示了一些奇怪的行为:
您可能已经注意到,没有可见的按钮。例如,用于缩放的plus
和按钮。minus
但myLocation
按钮似乎也不见了。有趣的是:当我点击右上角或右下角的屏幕(您可能知道它们应该在哪里)时,应用程序会完全按照您的预期运行!
由于我只是与android maps api 文档教程一起工作,我不认为这是设置可见内容的问题。我宁愿假设这与我显示片段的方式有关,某些层似乎妨碍了。我怎样才能解决这个问题?
也许这里有人能发现我的错误,我将非常感激!
主机片段
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不能解决问题