首页 > 解决方案 > 根据不同的屏幕尺寸缩放android元素

问题描述

我面临“图像”、“文本字段”、“按钮”的缩放问题,基本上是我在布局中使用的所有元素。

在此处输入图像描述

如果您在下面看到,这是一个 5.5 英寸分辨率的显示器,我的应用程序看起来很完美,但是当我更改屏幕分辨率时,我的元素开始重叠。这就是它开始看起来的样子......

在此处输入图像描述

元素开始相互重叠,有人可以帮我解决这个问题吗?我已经挣扎了4天了。

下面是布局 XML...

我还拖动了中间的小气泡以将其匹配到屏幕发送以便我可以构建,否则我会遇到构建错误,所以我将这些气泡拖到屏幕边缘以进行修复

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:background="@drawable/appbackgroundall">

    <Switch
        android:id="@+id/smartlever"
        android:layout_width="116dp"
        android:layout_height="42dp"
        android:checked="false"
        android:hapticFeedbackEnabled="true"
        android:scaleX="2"
        android:scaleY="2"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.294"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.499"/>

    <TextView
        android:id="@+id/smartButtonText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fontFamily="@font/sansationregular"
        android:scaleX="2"
        android:scaleY="2"
        android:text="Tap to alter smart mode"
        android:textColor="@color/colorAccent"
        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.433" />

    <ImageView
        android:id="@+id/allbackcologo"
        android:layout_width="66dp"
        android:layout_height="62dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.976"
        app:srcCompat="@drawable/companylogo" />

    <ImageView
        android:id="@+id/spaceman"
        android:layout_width="205dp"
        android:layout_height="253dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.868"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.15"
        app:srcCompat="@drawable/spaceman" />

    <ImageView
        android:id="@+id/pingedlogo"
        android:layout_width="139dp"
        android:layout_height="52dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.058"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.023"
        app:srcCompat="@drawable/pingedlogo" />

    <Button
        android:id="@+id/developerbutton"
        style="@style/Widget.MaterialComponents.Button.TextButton"
        android:hapticFeedbackEnabled="true"
        android:layout_width="64dp"
        android:layout_height="61dp"
        android:fontFamily="monospace"
        android:scaleX="2"
        android:scaleY="2"
        android:text=""
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.495"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.976" />

    <ImageView
        android:id="@+id/settingButton"
        android:layout_width="61dp"
        android:layout_height="59dp"
        android:rotation="175"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.923"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.023"
        app:srcCompat="@drawable/settingbutton" />

    <Button
        android:id="@+id/settingB"
        style="@style/Widget.MaterialComponents.Button.TextButton"
        android:layout_width="60dp"
        android:layout_height="59dp"
        android:fontFamily="monospace"
        android:scaleX="2"
        android:scaleY="2"
        app:layout_constraintBottom_toBottomOf="@+id/settingButton"
        app:layout_constraintEnd_toEndOf="@+id/settingButton"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="@+id/settingButton"
        app:layout_constraintTop_toTopOf="@+id/settingButton"
        app:layout_constraintVertical_bias="0.0" />

    <ImageView
        android:id="@+id/imageView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.093"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.784"
        app:srcCompat="@drawable/alientwo" />

</androidx.constraintlayout.widget.ConstraintLayout>

标签: androidxmlandroid-layoutandroid-fragments

解决方案


尝试使用 minWidth 和 maxWidth,

例子 :

<ImageView
        android:id="@+id/imageView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:maxHeight="50dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.093"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.784"
        app:srcCompat="@drawable/alientwo" />

推荐阅读