Android: problema de tamaño de diseño al cambiar la configuración del

Android: problema de tamaño de diseño al cambiar la configuración del dispositivo

Actualmente estoy enfrentando un problema relacionado con el cambio de tamaño.

He codificado mis archivos xml usando dp, pero cuando cambio el tamaño de la pantalla del dispositivo, el diseño cambia.

Por ejemplo, cuando entro en Configuración - Pantalla - Zoom y fuente de pantalla y configuro el zoom de pantalla de mediano a grande, algunos de los elementos de mi diseño, como la vista de imagen o el botón, crecerían y se irían más allá de la pantalla.

Como estoy usando un diseño complejo que contiene LinearLayouts y FrameLayouts, no tengo claro cómo debo hacer que este diseño se vea bien en cualquier otro dispositivo o tamaño de pantalla. Parece que cuando cambio la configuración del zoom de la pantalla, el valor de dp cambia.

¿Hay alguna forma de evitar este problema, o tal vez establecer mediante programación la configuración de zoom de la pantalla en medio?

Aquí está mi código:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:gravity="center"
    android:layout_gravity="center"
    android:layout_marginTop="65dp">

    <android.support.constraint.ConstraintLayout
        android:id="@+id/frameLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="95dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.3">

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/home_map" />

        <Button
            android:id="@+id/pick1"
            android:layout_width="34dp"
            android:layout_height="56dp"
            android:background="@drawable/top_deselected"
            app:layout_constraintBottom_toBottomOf="@+id/imageView"
            app:layout_constraintEnd_toEndOf="@+id/imageView"
            app:layout_constraintHorizontal_bias="0.17"
            app:layout_constraintStart_toStartOf="@+id/imageView"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.18" />

        <Button
            android:id="@+id/pick2"
            android:layout_width="34dp"
            android:layout_height="56dp"
            android:background="@drawable/jungle_deselected"
            app:layout_constraintBottom_toBottomOf="@+id/imageView"
            app:layout_constraintEnd_toEndOf="@+id/imageView"
            app:layout_constraintHorizontal_bias="0.28"
            app:layout_constraintStart_toStartOf="@+id/imageView"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.367" />

        <Button
            android:id="@+id/pick3"
            android:layout_width="34dp"
            android:layout_height="56dp"
            android:background="@drawable/mid_deselected"
            app:layout_constraintBottom_toBottomOf="@+id/imageView"
            app:layout_constraintEnd_toEndOf="@+id/imageView"
            app:layout_constraintHorizontal_bias="0.424"
            app:layout_constraintStart_toStartOf="@+id/imageView"
            app:layout_constraintTop_toTopOf="@+id/imageView"
            app:layout_constraintVertical_bias="0.43" />

        <Button
            android:id="@+id/pick4"
            android:layout_width="34dp"
            android:layout_height="56dp"
            android:background="@drawable/support_deselected"
            app:layout_constraintBottom_toBottomOf="@+id/imageView"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.615"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="@+id/imageView"
            app:layout_constraintVertical_bias="0.71" />

        <Button
            android:id="@+id/pick5"
            android:layout_width="34dp"
            android:layout_height="56dp"
            android:background="@drawable/adc_deselected"
            app:layout_constraintBottom_toBottomOf="@+id/imageView"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.733"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="@+id/imageView"
            app:layout_constraintVertical_bias="0.71" />

    </android.support.constraint.ConstraintLayout>

    <Button
        android:layout_width="335dp"
        android:layout_height="42.5dp"
        android:layout_marginBottom="5.5dp"
        android:background="@drawable/home_mode"
        android:id="@+id/home_mode"/>

    <Button
        android:layout_width="335dp"
        android:layout_height="42.5dp"
        android:background="@drawable/home_match"
        android:id="@+id/home_match"/>

</LinearLayout>

El diseño de restricción solía ser un diseño de marco, pero ahora estaba probando el diseño de restricción.

Mostrar la mejor respuesta

Intente usar sp en lugar de dp. lea este enlace

El uso de sp no parece resolver el problema... en realidad cambia el tamaño del diseño aún más.

¿Puedes publicar el archivo de diseño para que podamos echarle un vistazo? En general, usar "sp" para el tamaño de fuente y "dp" para otras dimensiones debería funcionar normalmente.

Agregué mi código a mi pregunta. Gracias.

También puede usar esta biblioteca, está funcionando en todos los dispositivos, no es necesario crear ningún archivo dimen y todo. pero use esto solo para el tamaño de los widgets, para el tamaño del texto use solo "sp".

https://github.com/intuit/sdp

Gracias por comentar Actualmente estoy probando cosas con esta biblioteca.

¡Gracias! ¡La biblioteca parece hacer el trabajo!

Que bueno, lo estaba buscando. Gracias