Android 布局在设备间不一致,而不是使用 dp

Android layout not consistent across devices instead of using dp

Screenshot of first image Screenshot of other phone我在 it.This 中有一个 LinearLayout、RelativeLayout、LinearLayout 和一个 ImageView 基本上是我的应用程序的登录页面,尽管使用了 dp,但我的输出在所有设备上都不相同。有两个不同手机的屏幕截图。提前致谢

<LinearLayout
        android:id="@+id/lb_LinearLayout"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <RelativeLayout
        android:id="@+id/lb_Relative_HomeScreen"
        android:layout_width="match_parent"
        android:layout_height="450dp">
            <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="350dp">
           ``   <ImageView
                android:id="@+id/lb_Background_Image"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="fitXY" />
            </LinearLayout>
            <TextView
                android:id="@+id/lb_Welcome"
                android:text="@string/welcome"
                android:gravity="start"
                style="@style/Heading2.yellow"
                android:layout_width="match_parent"
                android:layout_height="30dp"
                android:layout_gravity="start|center_vertical"
                android:layout_above="@+id/lb_Descrption"
                android:layout_marginLeft="20dp"
                />
...
</RelativeLayout>
</LinearLayout>

你应该像这样使用 ScrollView :

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
    android:id="@+id/lb_LinearLayout"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <RelativeLayout
        android:id="@+id/lb_Relative_HomeScreen"
        android:layout_width="match_parent"
        android:layout_height="450dp">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="350dp">
            ``   <ImageView
            android:id="@+id/lb_Background_Image"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitXY" />
        </LinearLayout>
        <TextView
            android:id="@+id/lb_Welcome"
            android:text="@string/welcome"
            android:gravity="start"
            style="@style/Heading2.yellow"
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:layout_gravity="start|center_vertical"
            android:layout_above="@+id/lb_Descrption"
            android:layout_marginLeft="20dp"
            />
        ...
    </RelativeLayout>
</LinearLayout>

为了更好地兼容所有设备,请尝试使用 "wrap_content" 或 "match_parent" 作为高度和宽度。如果图像让你在代码中声明 dp,那么请通过这个 link : https://developer.android.com/guide/practices/screens_support.html

您需要为主要的屏幕密度范围和屏幕尺寸创建不同的布局文件。通过这种方式,您将能够微调您的布局以在多个显示器上看起来一致。

您可以通过预览轻松地为特定存储桶创建新布局 window:

  • 点击左下角的这个图标
  • 然后 select Create Other....
  • 弹出 window 然后 select 来自 Available Qualifiers size 不同屏幕尺寸的项目 Density 不同密度桶.
  • 在您 select 编辑了所需的项目后,按 >> 键,您可以 select 为 您希望创建新布局文件的适当存储桶.
  • 在此之后,您按确定,android 工作室会为您创建当前布局的副本并将其放置在适合您的文件夹中,您需要做的就是编辑它,以便它在特定布局上按照您希望的方式查看。