首页 > 解决方案 > 设计 Android 开发者屏幕尺寸

问题描述

嗨,我需要一些建议/帮助

我正在设计一个用于教育目的的应用程序,但要与不同的屏幕尺寸作斗争。

我正在使用 Android Studio 创建屏幕布局。

到目前为止,我所做的一切都很好,直到某一点。

我尝试使用约束布局/线性布局和相对布局,但都有相同的问题。

我照常创建主布局,然后创建具有相同活动名称但密度不同的新布局资源文件。

但是由于某些奇怪的原因,我的一些测试手机采用了一定的密度布局,但完全不成比例,即使它在 IDE 上的布局看起来是正确的,但在移植到手机的那一刻它就消失了。

创建可以满足所有布局的布局的最佳方法是什么?

这是我的布局示例

<?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=".login.LoginActivity"
    android:background="@drawable/background"
    android:padding="10dp">
    
    
    <TextView
        android:id="@+id/tv_appName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="250dp"
        android:layout_marginEnd="8dp"
        android:text="@string/app_name"
        android:textColor="@color/colorAccent"
        style="@style/Base.TextAppearance.AppCompat.Headline"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:textAlignment="center"
        android:textStyle="bold"
        android:textSize="28dp"/>
    
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="50dp"
        android:layout_marginTop="32dp"
        android:layout_marginEnd="50dp"
        android:ems="10"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tv_appName"
        android:background="@drawable/input_shape"
        android:padding="15dp"
        android:textColorHint="@color/colorAccent"
        android:textColor="@color/colorAccent"
        android:id="@+id/edittext1"
        android:singleLine="true"/>
    
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="50dp"
        android:layout_marginTop="20dp"
        android:layout_marginEnd="50dp"
        android:ems="10"
        android:inputType="textPersonName"
       app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/edittext1"
        android:background="@drawable/input_shape"
        android:padding="15dp"
        android:textColorHint="@color/colorAccent"
        android:textColor="@color/colorAccent"
        android:id="@+id/edittext2"
        android:singleLine="true"/>
    
    <Button
        android:id="@+id/btn_button1"
        android:layout_width="134dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        app:layout_constraintStart_toStartOf="@+id/edittext2"
        app:layout_constraintTop_toBottomOf="@+id/edittext2"
        android:background="@drawable/btn_shape"
        android:text="Button 1"/>
    
    <Button
        android:id="@+id/btn_button2"
        android:layout_width="134dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        app:layout_constraintEnd_toEndOf="@+id/edittext2"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toEndOf="@+id/btn_button1"
        app:layout_constraintTop_toBottomOf="@+id/btn_button1"
        android:background="@drawable/btn_shape"
        android:text="Button 2"
        />
    
   


</androidx.constraintlayout.widget.ConstraintLayout>

标签: android-studio

解决方案


我很确定您的视图使用了固定大小。

切勿对视图使用固定大小。如果您使用 aConstraintLayout然后将任何视图的layout_widthand设置layout_height为 0dp (这将使视图尽可能大,只要它不超过约束)或wrap_content(这将自动使视图只有大小它需要)。在其他布局上而不是使用 0dp 来使视图尽可能大,使用match_parent. wrap_content在每个布局中做同样的事情。


推荐阅读