Android - LinearLayout не прокручивается внутри ScrollVIew - PullRequest
0 голосов
/ 13 июня 2018

У меня проблема с тем, что 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 программно, что не помогло также.

Я застрял с этой проблемой некоторое времясейчас и был бы очень признателен за любую помощь в этом отношении:)

Скриншот

Ответы [ 3 ]

0 голосов
/ 13 июня 2018

Вы помещаете линейную ориентацию в 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>
0 голосов
/ 13 июня 2018

Попробуйте это: -

<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>
0 голосов
/ 13 июня 2018

Это работает для меня с 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>
...