2016-09-27 3 views
0

У меня возникла довольно специфическая проблема. У меня есть MapFragment в моем Activity в FrameLayout, так что Toolbar накладывает карту. Это потому, что Toolbar иногда нужно анимировать с экрана, и если он не накладывается на карту, будет разрыв.MapFragment update button position

Теперь, когда устройство не имеет действительных Google Play Services, MapFragment отобразит сообщение и кнопку, чтобы обновить службы по умолчанию. Моя проблема в том, что это сообщение отображается в верхнем левом углу карты, что ниже Toolbar.

У кого-нибудь есть идея, как решить эту проблему? Может быть, проверить правильность самого Google Play Services и создать прописку, если она недействительна? Или есть простое решение, такое как установка какой-то гравитации на карте, чтобы сообщение об обновлении было сосредоточено.

Я ценю помощь.

ответ

1

Вы можете добавить прокладку по краям карты с помощью метода GoogleMap.setPadding(). Или создавать пользовательские alertDialog, который показывает пользователю информацию о Google Play Services

пример с диалоговым

GoogleApiAvailability api = GoogleApiAvailability.getInstance(); 
     int code = api.isGooglePlayServicesAvailable(activity); 
     if (code == ConnectionResult.SUCCESS) { 
     // 
     } else { 
      AlertDialog alertDialog = 
       new AlertDialog.Builder(activity, R.style.AppCompatAlertDialogStyle).setMessage(
         "You need to download Google Play Services in order to use this part of the application") 
         .create(); 
      alertDialog.show(); 
     } 
+0

Параметр 'Метод setPadding' не будет работать, так как нет никакой карты загружены, но идея использовать диалог хорошо. Я использовал его в предыдущем проекте с примечанием о том, что я сделал диалог невозможным для отклонения (в случае, если это будет отклонено, пользователь будет на пустом экране). –

+0

следует добавить .setCancelable (ложь) –

+0

или .setOnDismissListener (новый DialogInterface.OnDismissListener() { @Override общественных недействительный onDismiss (DialogInterface dialogInterface) {// закончить деятельность или вернуться к предыдущему фрагменту } }) –