Sto sviluppando un'app per Android. In questa app sto mostrando un MapView in un frammento. Se il mio dispositivo è ruotato e cerco di spostare la telecamera utilizzando uno dei seguenti metodi:IllegalStateException: dimensioni della vista troppo piccole dopo il riempimento
mapa.animateCamera(cameraUpdate);
o
mapa.moveCamera(cameraUpdate);
Poi i miei applicazione si blocca e mostra il seguente errore:
java.lang.IllegalStateException: View size is too small after padding
at com.google.a.a.ab.b(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.c.a.a(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.c.a.a(Unknown Source)
at com.google.maps.api.android.lib6.d.dw.a(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.c.a.a(Unknown Source)
at com.google.maps.api.android.lib6.d.et.a(Unknown Source)
at com.google.android.gms.maps.internal.j.onTransact(SourceFile:83)
at android.os.Binder.transact(Binder.java:380)
at com.google.android.gms.maps.internal.IGoogleMapDelegate$zza$zza.moveCamera(Unknown Source)
at com.google.android.gms.maps.GoogleMap.moveCamera(Unknown Source)
at com.accionplus.dbdplus.utils.MapUtils.centrarCamara(MapUtils.java:88)
at com.accionplus.dbdplus.utils.MapUtils.centrarCamara(MapUtils.java:52)
at com.accionplus.dbdplus.controladores.pdv.RutaProgramadaFragment$4.onMyLocationButtonClick(RutaProgramadaFragment.java:274)
at com.google.android.gms.maps.GoogleMap$3.onMyLocationButtonClick(Unknown Source)
at com.google.android.gms.maps.internal.zzo$zza.onTransact(Unknown Source)
at android.os.Binder.transact(Binder.java:380)
at com.google.android.gms.maps.internal.be.a(SourceFile:81)
at com.google.maps.api.android.lib6.d.ak.onClick(Unknown Source)
at android.view.View.performClick(View.java:5156)
at android.view.View$PerformClick.run(View.java:20755)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5832)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
Ho cercato su google ma senza successo. Ho appena scoperto che si trattava di un problema segnalato per Google, ma non so se c'è qualche soluzione per "risolvere" questo problema. Qualcuno può aiutarmi?
EDIT: sto aggiungendo più di codice
<RelativeLayout 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"
tools:context="com.accionplus.dbdplus.controladores.pdv.RutaProgramadaActivity">
<LinearLayout
android:id="@+id/card_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#15000000"
android:orientation="vertical"/>
<LinearLayout
android:id="@+id/filtro_ll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/card_container"
android:layout_margin="10dp"
android:gravity="left|top"
android:orientation="horizontal"
android:weightSum="1">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.7"
android:gravity="left|top"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:orientation="horizontal"
android:weightSum="1">
<ImageButton
android:id="@+id/seleccionar_fecha_btn"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:background="@drawable/button"
android:src="@drawable/ic_date"
android:text="@string/buscar"
android:textColor="@color/color_text_primary"/>
<TextView
android:id="@+id/fecha_consulta_tv"
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_alignParentTop="true"
android:layout_marginLeft="5dp"
android:background="@drawable/rectangle"
android:gravity="center"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/rectangle">
<Spinner
android:id="@+id/tipo_ruta_sp"
android:layout_width="fill_parent"
android:layout_height="35dp"
android:layout_gravity="center"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<com.google.android.gms.maps.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/filtro_ll"/>
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:foregroundGravity="center|top"
android:visibility="gone"/>
</RelativeLayout>
Ecco quando si fa clic MyLocationButton
:
mMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() {
@Override
public boolean onMyLocationButtonClick() {
MapUtils.centrarCamara(getActivity(), mMap, mPuntosFinales);
return true;
}
});
Ecco MapUtils.centrarCamara()
metodo:
public static void centrarCamara(Context contexto, GoogleMap mapa, LatLng... posiciones) {
centrarCamara(contexto, mapa, Boolean.TRUE, posiciones);
}
public static void centrarCamara(Context contexto, GoogleMap mapa, boolean animado,
LatLng... posiciones) {
if (mapa == null) {
return;
}
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (LatLng posicion : posiciones) {
builder.include(posicion);
}
LatLngBounds bounds = builder.build();
CameraUpdate cu = CameraUpdateFactory
.newLatLngBounds(bounds, ViewUtils.dpAPixeles(MARKERS_DP_OFFSET, contexto));
if (animado) {
mapa.animateCamera(cu);
} else {
mapa.moveCamera(cu);
}
}
ViewUtils.dpAPixeles:
public static int dpAPixeles(int dp, Context contexto) {
Resources r = contexto.getResources();
int px = (int) TypedValue
.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, r.getDisplayMetrics());
return px;
}
L'eccezione occurrs quando mapa.moveCamera()
o mapa.animateCamera()
sono chiamati;
Potresti pubblicare il codice che stai utilizzando per creare l'oggetto 'cameraUpdate'? – antonio
Grazie per la risposta, @antonio. Ho pubblicato più codice – Antonio