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