滚动视图不显示相对布局的所有元素

Scrollview not displaying all elements of a Relative Layout

大家好,我是 android 世界的新手,我的 android 应用程序中的 ScrollView 一直存在问题。当我将屏幕的方向从纵向更改为横向并且未显示登录按钮时会出现问题。这可能是由于注册按钮显示在布局的末尾。任何帮助将不胜感激。

login_layout.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:scrollbars="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
android:layout_weight="1">

<RelativeLayout
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:background="#ff2b8bff">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Sign in"
        android:id="@+id/signInButton"
        android:background="#fffffbfd"
        android:onClick="signIn"
        android:layout_below="@+id/usersPassword"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="52dp" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="textEmailAddress"
        android:ems="10"
        android:id="@+id/usersEmail"
        android:layout_marginTop="31dp"
        android:layout_below="@+id/bourguestLogo"
        android:layout_centerHorizontal="true" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
        android:ems="10"
        android:id="@+id/usersPassword"
        android:layout_marginTop="35dp"
        android:layout_below="@+id/usersEmail"
        android:layout_alignStart="@+id/usersEmail" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Sign up"
        android:id="@+id/signUpButton"
        android:onClick="changeLayout"
        android:background="#ffff2f14"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentEnd="true" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/bourguestLogo"
        android:src="@drawable/waiter"
        android:layout_marginTop="88dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

</RelativeLayout>
</ScrollView>

隐藏是因为margin top > screen height

  • 您将徽标设置在视图顶部(顶部边距为 88dp)
  • 徽标下方有 UserEmail(顶部边距为 31dp)
  • 在 UserEmail 下方有 UsersPassword(顶部边距为 35 dp)
  • 在 UserPassword 下方,我们找到 SingIn 按钮(顶部边距为 52 dp)

=> 88+31+35+52 dp > 你的屏幕高度(在横向模式下),所以你的按钮将被 SingUpButton 隐藏(设置在布局 android:layout_alignParentBottom="true")

作为解决方案,请尝试下面我的建议,否则您应该减少顶部边距

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ff2b8bff">

    <ScrollView
        android:scrollbars="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:fillViewport="true"
        android:layout_weight="1">

        <RelativeLayout
            android:orientation="vertical" android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="#ff2b8bff">

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Sign in"
                android:id="@+id/signInButton"
                android:background="#fffffbfd"
                android:onClick="signIn"
                android:layout_below="@+id/usersPassword"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="52dp" />

            <EditText
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="textEmailAddress"
                android:ems="10"
                android:id="@+id/usersEmail"
                android:layout_marginTop="31dp"
                android:layout_below="@+id/bourguestLogo"
                android:layout_centerHorizontal="true" />

            <EditText
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="textPassword"
                android:ems="10"
                android:id="@+id/usersPassword"
                android:layout_marginTop="35dp"
                android:layout_below="@+id/usersEmail"
                android:layout_alignStart="@+id/usersEmail" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/bourguestLogo"
                android:src="@drawable/waiter"
                android:layout_marginTop="88dp"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true" />

        </RelativeLayout>
    </ScrollView>

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Sign up"
        android:id="@+id/signUpButton"
        android:onClick="changeLayout"
        android:background="#ffff2f14"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentEnd="true" />
</LinearLayout>