Con el cambio al SDK35, en mis aplicaciones se está produciendo un efecto inesperado que es el solapamiento de la barra de tareas con la pp en los dispositivos con Android 15
Esto es al parecer porque, por defecto, en Android 15, las aplicaciones se muestran a pantalla completa (EdgeToEdge) con los que, si no lo impedimos se produce este error.
import android.os.Bundle;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
}
}
Yo eliminaba las instrucciones EdgeToEdge y ViewCompat.setOnApplyWindowInsetsListener y me quedaba tan pancho, parecía que no afectaba en nada a la aplicación y eliminaba los imports correspondiente pero si lo haces, estas cayendo en el error que se produce con los dispositivos Android 15.
Solución alternativa
Buscando por internet encontré otra solución si no quería volver a añadir esas líneas de código en mis Activitys y es añadir la siguiente instrucción al xml de dichas Activitys:
android:fitsSystemWindows="true"
Por ejemplo, la activity.xml quedaría de la siguiente forma:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorFondoPantalla"
android:fitsSystemWindows="true"
tools:context=".AboutActivity2">
....
</RelativeLayout>
En principio esto parece que soluciona el problema pero no sé si para todos los dispositivos, o producirá un efecto indeseado, lo desconozco.
También encontré que se podía utilizar el siguente código:
WindowCompat.setDecorFitsSystemWindows(getWindow(), false);
en el onCreate() de cada activity pero no lo puedo asegurar
Por tanto, lo mejor es añadir las líneas de código a la Activity.java y no complicarnos la vida.
No hay comentarios:
Publicar un comentario