首页 > 解决方案 > ScrollView 带走了 LinearLayout 约束

问题描述

我正在尝试在登录屏幕上通过 LinearLayout 实现 ScrollView,但滚动视图似乎弄乱了 LinearLayout 上的所有约束。

什么应该看起来像这样

在此处输入图像描述

添加 ScrollView 时看起来像这样

在此处输入图像描述

<?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/relative_root_login"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bitmap_resource"
tools:context="dreamentries.dreamentries.LoginActivity">

<ScrollView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <LinearLayout
        android:id="@+id/linear_center_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginBottom="5dp"
        android:layout_marginEnd="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginStart="10dp"
        android:orientation="vertical"
        android:padding="5dp">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="text"
            android:textSize="30dp"
            android:visibility="invisible" />

        <EditText
            android:id="@+id/login_edittxt_email"
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:layout_marginBottom="5dp"
            android:layout_marginEnd="25dp"
            android:layout_marginLeft="25dp"
            android:layout_marginRight="25dp"
            android:layout_marginStart="25dp"
            android:alpha="0.95"
            android:background="#202020"
            android:hint="EMAIL"
            android:inputType="textEmailAddress"
            android:letterSpacing="0.095"
            android:padding="5dp"
            android:paddingEnd="15dp"
            android:paddingLeft="15dp"
            android:paddingStart="15dp"
            android:textColor="#fff"
            android:textColorHint="#fff"
            android:textSize="15dp" />

        <EditText
            android:id="@+id/login_edittxt_pass"
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:layout_marginEnd="25dp"
            android:layout_marginLeft="25dp"
            android:layout_marginRight="25dp"
            android:layout_marginStart="25dp"
            android:layout_marginTop="5dp"
            android:alpha="0.95"
            android:background="#202020"
            android:hint="PASSWORD"
            android:inputType="textPassword"
            android:letterSpacing="0.095"
            android:padding="5dp"
            android:paddingEnd="15dp"
            android:paddingLeft="15dp"
            android:paddingStart="15dp"
            android:textColor="#fff"
            android:textColorHint="#fff"
            android:textSize="15dp" />

    </LinearLayout>
</ScrollView>


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/linear_center_login"
    android:layout_marginEnd="15dp"
    android:layout_marginLeft="15dp"
    android:layout_marginRight="15dp"
    android:layout_marginStart="15dp"
    android:layout_marginTop="2dp"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="text"
        android:textSize="40dp"
        android:visibility="invisible" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginEnd="25dp"
        android:layout_marginLeft="25dp"
        android:layout_marginRight="25dp"
        android:layout_marginStart="25dp"
        android:orientation="horizontal">


        <TextView
            android:id="@+id/btn_login_earlyadopter"
            android:layout_width="0dp"
            android:layout_height="45dp"
            android:layout_gravity="center"
            android:layout_marginEnd="4dp"
            android:layout_marginRight="4dp"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="#C0202020"
            android:gravity="center"
            android:letterSpacing="0.095"
            android:text="REGISTER"
            android:textColor="#fff"
            android:textSize="17dp" />

        <TextView
            android:id="@+id/btn_login_login"
            android:layout_width="0dp"
            android:layout_height="45dp"
            android:layout_gravity="center"
            android:layout_marginLeft="4dp"
            android:layout_marginStart="4dp"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="#C0202020"
            android:gravity="center"
            android:letterSpacing="0.095"
            android:text="LOGIN"
            android:textColor="#fff"
            android:textSize="17dp" />

    </LinearLayout>

</LinearLayout>

</RelativeLayout>

我在 ScrollView 属性中缺少什么以防止它弄乱 LinearLayout

标签: androidxmlscrollviewandroid-linearlayoutandroid-scrollview

解决方案


我必须将 linearLayouts 包装在 RelativeLayout 中,然后将 Scrollview 设置为:

android:fillViewport="true"
android:layout_width="match_parent"
android:layout_height="match_parent"

以下将达到您正在寻找的效果:

<?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/relative_root_login"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bitmap_resource"
tools:context="dreamentries.dreamentries.LoginActivity">

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <LinearLayout
        android:id="@+id/linear_center_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginBottom="5dp"
        android:layout_marginEnd="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginStart="10dp"
        android:orientation="vertical"
        android:padding="5dp">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="text"
            android:textSize="30dp"
            android:visibility="invisible" />

        <EditText
            android:id="@+id/login_edittxt_email"
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:layout_marginBottom="5dp"
            android:layout_marginEnd="25dp"
            android:layout_marginLeft="25dp"
            android:layout_marginRight="25dp"
            android:layout_marginStart="25dp"
            android:alpha="0.95"
            android:background="#202020"
            android:hint="EMAIL"
            android:inputType="textEmailAddress"
            android:letterSpacing="0.095"
            android:padding="5dp"
            android:paddingEnd="15dp"
            android:paddingLeft="15dp"
            android:paddingStart="15dp"
            android:textColor="#fff"
            android:textColorHint="#fff"
            android:textSize="15dp" />

        <EditText
            android:id="@+id/login_edittxt_pass"
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:layout_marginEnd="25dp"
            android:layout_marginLeft="25dp"
            android:layout_marginRight="25dp"
            android:layout_marginStart="25dp"
            android:layout_marginTop="5dp"
            android:alpha="0.95"
            android:background="#202020"
            android:hint="PASSWORD"
            android:inputType="textPassword"
            android:letterSpacing="0.095"
            android:padding="5dp"
            android:paddingEnd="15dp"
            android:paddingLeft="15dp"
            android:paddingStart="15dp"
            android:textColor="#fff"
            android:textColorHint="#fff"
            android:textSize="15dp" />

    </LinearLayout>


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/linear_center_login"
    android:layout_marginEnd="15dp"
    android:layout_marginLeft="15dp"
    android:layout_marginRight="15dp"
    android:layout_marginStart="15dp"
    android:layout_marginTop="2dp"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="text"
        android:textSize="40dp"
        android:visibility="invisible" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginEnd="25dp"
        android:layout_marginLeft="25dp"
        android:layout_marginRight="25dp"
        android:layout_marginStart="25dp"
        android:orientation="horizontal">


        <TextView
            android:id="@+id/btn_login_earlyadopter"
            android:layout_width="0dp"
            android:layout_height="45dp"
            android:layout_gravity="center"
            android:layout_marginEnd="4dp"
            android:layout_marginRight="4dp"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="#C0202020"
            android:gravity="center"
            android:letterSpacing="0.095"
            android:text="REGISTER"
            android:textColor="#fff"
            android:textSize="17dp" />

        <TextView
            android:id="@+id/btn_login_login"
            android:layout_width="0dp"
            android:layout_height="45dp"
            android:layout_gravity="center"
            android:layout_marginLeft="4dp"
            android:layout_marginStart="4dp"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="#C0202020"
            android:gravity="center"
            android:letterSpacing="0.095"
            android:text="LOGIN"
            android:textColor="#fff"
            android:textSize="17dp" />

    </LinearLayout>

</LinearLayout>

</RelativeLayout>

</ScrollView>


推荐阅读