Android 如何使小屏幕和大屏幕的布局保持一致;s总是留下一些空白

Android 如何使小屏幕和大屏幕的布局保持一致;s总是留下一些空白,android,xml,android-layout,android-studio,Android,Xml,Android Layout,Android Studio,如何使布局适合所有屏幕尺寸 我试图通过将小部件放在相对布局中来实现这一点,但在底部,我总是在底部看到一些空白 在某种程度上,我可以通过在最后一个小部件中添加顶部边距来完成这项工作,以便剩余的空间被占用 但我认为这不是最好的方法,因为在较小的屏幕上,小部件往往会消失在底部 请查看此处布局的屏幕截图 这里是xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.

如何使布局适合所有屏幕尺寸

我试图通过将小部件放在相对布局中来实现这一点,但在底部,我总是在底部看到一些空白

在某种程度上,我可以通过在最后一个小部件中添加顶部边距来完成这项工作,以便剩余的空间被占用

但我认为这不是最好的方法,因为在较小的屏幕上,小部件往往会消失在底部

请查看此处布局的屏幕截图 这里是xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_fit_employess"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.thebitshoes.classproject.FitEmployess">

            <ImageView
                android:layout_width="213dp"
                android:layout_height="141dp"
                android:src="@mipmap/adios"
                android:id="@+id/adios"
                android:layout_centerHorizontal="true"
                android:layout_marginBottom="18dp"
                />


            <EditText
                android:id="@+id/email_tv"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="E-mail"
                android:layout_marginBottom="22dp"
                android:layout_below="@id/adios"
                />

            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textVisiblePassword"
                android:ems="10"
                android:id="@+id/pass_tv"
                android:layout_marginBottom="27dp"
                android:hint="Password"
                android:layout_below="@+id/email_tv"
                />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_below="@+id/pass_tv">

        <Button
            android:text="Login"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="11dp"
            android:id="@+id/login_btn"
            android:onClick="loginNow"
            android:layout_weight="0.33"
            />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/newuser"
            android:layout_marginBottom="12dp"
            android:layout_gravity="center_horizontal"
            android:id="@+id/n_user_tv"
            android:layout_weight="0.33"

            />

        <TextView
            android:text="Sign Up"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/signup_tv"
            android:layout_marginBottom="11dp"
            android:textSize="18sp"
            android:layout_gravity="center_horizontal"
            android:layout_weight="0.33" />
    </LinearLayout>





    </RelativeLayout>

为什么要删除空白?这样做真的没有意义


如果您真的想要,您可以将底部元素(或一些底部元素)锚定到屏幕底部。但这只会在中间添加空白。你想要的其实是不可能的——你有不同大小的屏幕和相同大小的内容。有些屏幕不会完全满。您所能做的就是选择多余的空间的位置。

为什么要删除空白?这样做真的没有意义


如果您真的想要,您可以将底部元素(或一些底部元素)锚定到屏幕底部。但这只会在中间添加空白。你想要的其实是不可能的——你有不同大小的屏幕和相同大小的内容。有些屏幕不会完全满。您所能做的就是选择额外空间的位置。

您可以始终正确使用覆盖整个屏幕的砝码(尽量不提供边距,因为在小型设备上充气时,砝码会被拧紧)

以下是为xml重写的示例代码:

  <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/activity_fit_employess"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical"
          android:paddingBottom="@dimen/activity_vertical_margin"
          android:paddingLeft="@dimen/activity_horizontal_margin"
          android:paddingRight="@dimen/activity_horizontal_margin"
          android:paddingTop="@dimen/activity_vertical_margin"
          android:weightSum="2">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1.3"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/adios"
        android:layout_width="213dp"
        android:layout_height="141dp"
        android:layout_gravity="center_horizontal"
        android:src="@android:drawable/ic_dialog_email"/>


    <EditText
        android:id="@+id/email_tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:hint="E-mail"
        android:text="email_tv"/>

    <EditText
        android:id="@+id/pass_tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Password"
        android:layout_weight="1"
        android:inputType="textVisiblePassword"
        android:text="pass_tv"/>
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_below="@+id/pass_tv"
    android:layout_weight="0.7"
    android:orientation="vertical">

    <Button
        android:id="@+id/login_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="11dp"
        android:layout_weight="1"
        android:text="Login"/>

    <TextView
        android:id="@+id/n_user_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginBottom="11dp"
        android:layout_weight="1"
        android:text=" newuser"/>

    <TextView
        android:id="@+id/signup_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_weight="1"
        android:text="Sign Up"
        android:textSize="18sp"/>
</LinearLayout>

下面是在不同设备上查看上述xml的屏幕截图:

您可以始终正确使用覆盖整个屏幕的砝码(尽量不留边距,因为在小型设备上充气时,砝码往往会被拧紧)

以下是为xml重写的示例代码:

  <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/activity_fit_employess"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical"
          android:paddingBottom="@dimen/activity_vertical_margin"
          android:paddingLeft="@dimen/activity_horizontal_margin"
          android:paddingRight="@dimen/activity_horizontal_margin"
          android:paddingTop="@dimen/activity_vertical_margin"
          android:weightSum="2">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1.3"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/adios"
        android:layout_width="213dp"
        android:layout_height="141dp"
        android:layout_gravity="center_horizontal"
        android:src="@android:drawable/ic_dialog_email"/>


    <EditText
        android:id="@+id/email_tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:hint="E-mail"
        android:text="email_tv"/>

    <EditText
        android:id="@+id/pass_tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Password"
        android:layout_weight="1"
        android:inputType="textVisiblePassword"
        android:text="pass_tv"/>
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_below="@+id/pass_tv"
    android:layout_weight="0.7"
    android:orientation="vertical">

    <Button
        android:id="@+id/login_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="11dp"
        android:layout_weight="1"
        android:text="Login"/>

    <TextView
        android:id="@+id/n_user_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginBottom="11dp"
        android:layout_weight="1"
        android:text=" newuser"/>

    <TextView
        android:id="@+id/signup_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_weight="1"
        android:text="Sign Up"
        android:textSize="18sp"/>
</LinearLayout>

下面是在不同设备上查看上述xml的屏幕截图:

xml在哪里?试着用重量代替边距。对不起,现在是这样。我不确定是什么让你填满了屏幕,但根据材料设计规则,必须避免不必要的填充屏幕。让你的小部件一个接一个地对齐,而不必担心空的空间。当屏幕上出现什么东西时,你一定会感到烦恼。但对于登录、注册或列表等屏幕,空屏幕不应占用您的时间。请参阅问题帖子中的屏幕截图。我并不完全想填充,而是要在所有屏幕大小上均匀地分布小部件。请看一下图片。这就是我想要展示的xml在哪里?试着用重量代替边距。对不起,现在是这样。我不确定是什么让你填满了屏幕,但根据材料设计规则,必须避免不必要的填充屏幕。让你的小部件一个接一个地对齐,而不必担心空的空间。当屏幕上出现什么东西时,你一定会感到烦恼。但对于登录、注册或列表等屏幕,空屏幕不应占用您的时间。请参阅问题帖子中的屏幕截图。我并不完全想填充,而是要在所有屏幕大小上均匀地分布小部件。请看一下图片。这就是我试图展示的内容完全同意第1点,不需要消除空格,我能给出的唯一建议是遵循简单屏幕(如登录/注册)的材料设计指南。我希望在密码下面的元素之间平均分配空格。我不想在屏幕底部留下空间,如果你想这样做的话-在一个线性布局中,密码下面有匹配的父级高度,并与父级底部对齐。将每个要占用相等空间的元素放置在内部,高度为0dp,重量为1。给他们重心。这将使它们大小相等,但将每个视图的内容放在该空间的中心。(如果重力不起作用,请使用布局\重力-我总是忘记哪个是哪个)。我如何锚定我的3个小部件,即:登录、新用户、底部注册以及它们之间的相等空间?我是否需要将其放在一个相对的布局中,然后提供一个上边距?完全同意第1点,不需要消除空格,我唯一能给出的建议是遵循简单屏幕(如login/registerI)的材料设计指南。我希望在密码下面的元素之间平均分配空格。我不想在屏幕底部留下空间,如果你想这样做的话-在一个线性布局中,密码下面有匹配的父级高度,并与父级底部对齐。将每个要占用相等空间的元素放置在内部,高度为0dp,重量为1。给他们重心。这将使它们大小相等,但将每个视图的内容放在该空间的中心。(如果重力不起作用,请使用布局\重力-我总是忘记哪个是哪个)。我如何锚定我的3个小部件,即:登录、新用户、底部注册以及它们之间的相等空间?我需要把它放在一个相对的布局中,然后提供一个上边距吗?谢谢你提供这个答案。它完美地解决了这个问题。我的理解是,我们应该围绕权重工作,以使布局一致。!!是的,还有一件事总是要测试你的横向和纵向布局,因为你可能需要不同方向的不同权重。谢谢你提供这个答案。它完美地解决了这个问题。我理解的是我们应该围绕weig工作