Android - LinearLayout不在ScrollVIew内滚动

时间:2018-06-12 21:51:07

标签: java android xml android-linearlayout android-scrollview

我遇到的问题是LinearLayout无法在ScrollView中滚动,而只是看起来超出了屏幕框架(仔细查看下面链接的屏幕截图的底部)。

我的XML布局中有以下结构:

<android.support.design.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.design.widget.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"/>
            </android.support.design.widget.TextInputLayout>

            <!-- More TextInputLayouts -->

        </LinearLayout>
    </ScrollView>

    <android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        android:src = "@drawable/ic_done"
        android:tint = "@color/white"/>
</android.support.design.widget.CoordinatorLayout>

没有找到解决方案能够解决问题:我尝试了fillViewPort =“true”并且它没有为我做,我也尝试评论CoordinatorLayout - 同样的结果,layout_heights似乎也设置正确。

此外,我试图以程序方式调整LinearLayout的高度,这也没有帮助。

我现在已经坚持这个问题一段时间了,非常感谢这方面的任何帮助:)

Screenshot

3 个答案:

答案 0 :(得分:0)

下面的XML对我有用。我没有太大变化,只是在LinearLayout中添加了一个方向,并且添加了一些边距和可怕的背景颜色,这样您就可以看到哪个视图正在移动,哪些视图在滚动时被修复。

当您向上和向下拖动时,蓝绿色框(LinearLayout)会按预期在红色框(ScrollView)中上下移动。如果你的LinearLayout比屏幕更高,那么它将偏离底部,这就是ScrollView的重点。

Scollbar screenshot

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="16dp"
    android:background="#ff0000"
    android:scrollbars="vertical">
    <LinearLayout
        android:orientation="vertical"
        android:layout_margin="16dp"
        android:background="#008080"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    </LinearLayout>
</ScrollView>

</android.support.design.widget.CoordinatorLayout>

答案 1 :(得分:0)

您将线性布局方向放在xml代码中 像..

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
</LinearLayout>

 <LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
</LinearLayout>

答案 2 :(得分:0)

试试这个: -

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

 xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@color/whiteColor"
  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"
  tools:context=".MainActivity">
<!-- vertical ScrollView to make all the items or views scrollable -->
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none">
 <!-- LinearLayout Inside ScrollView -->
 <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- create a Linear Layout with horizontal orientation and weightSum property -->
<LinearLayout
  android:id="@+id/firstLayout"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="20dp"
  android:orientation="horizontal"
  android:weightSum="2">
 <EditText
 android:id="@+id/lastName"
 android:layout_width="0dp"
 android:layout_height="50dp"
 android:layout_marginLeft="10dp"
 android:layout_weight="1.4"
 android:background="@color/editTextBack"
 android:hint="Last Name"
 android:imeOptions="actionNext"
 android:paddingLeft="10dp"
 android:singleLine="true"
 android:textColor="@color/blackColor" />
 </LinearLayout>
 <!-- create a Linear Layout with horizontal orientation and weightSum property -->

 <LinearLayout
  android:id="@+id/thirdLayout"
   android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
   android:orientation="horizontal"
    android:weightSum="2">

    <!-- place one TextView and one EditText inside layout using weight property -->

        <TextView
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_marginRight="10dp"
            android:layout_weight="0.6"
            android:gravity="center_vertical"
            android:paddingLeft="10dp"
            android:text="Address"
            android:textColor="@color/blackColor" />


 </LinearLayout>
 </ScrollView>

</LinearLayout>