在RecyclerView下移动ScrollView不起作用

时间:2016-02-18 22:40:34

标签: android xml scrollview android-recyclerview

我有以下xml,它可以工作,但我不想将scrollview用作父级。我想在recyclerview下看scrollview。我不希望整页滚动,我只希望我的屏幕的某个部分可以滚动。在我当前的xml中,甚至工具栏都是可滚动的,我不想要它。但是当我在recyclerview下移动scrollview时,我不喜欢它并得到以下问题。

我删除了部分xml,方便您关注。请不要认为xml缺少某些组件。我只希望在recyclerview下的GridLayout可以滚动。

  

渲染问题渲染期间引发的异常:ScrollView可以   主持一个直接孩子(详情)

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:background="@color/white"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:fitsSystemWindows="true">

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:orientation="vertical">
    <include
        android:id="@+id/toolbar"
        layout="@layout/tool_bar"
        />

    <LinearLayout
        xmlns:tools="http://schemas.android.com/tools"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="16dp"
        android:paddingBottom="16dp"
        android:paddingLeft="24dp"
        android:paddingRight="24dp"
        android:weightSum="1"
        android:focusable="true"
        android:focusableInTouchMode="true"
        tools:context=".PostProductActivity">

        <android.support.v7.widget.RecyclerView
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="140dp" />

        <GridLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center_horizontal"
            android:rowCount="1"
            android:columnCount="2">
            <android.support.design.widget.TextInputLayout
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:layout_columnSpan="1"
                android:layout_marginTop="8dp"
                android:layout_marginBottom="8dp">

                 <EditText android:id="@+id/editTextPrice"
                    android:layout_width="200dp"
                    android:layout_height="wrap_content"
                    android:layout_row="0"
                    android:layout_column="0"
                    android:layout_gravity="end"
                    android:inputType="text|number"
                    android:hint="@string/price"
                    android:textAlignment="viewEnd" />
            </android.support.design.widget.TextInputLayout>

        </GridLayout>
    </LinearLayout>
  </LinearLayout>
</ScrollView>

2 个答案:

答案 0 :(得分:3)

如果我理解正确,您需要在ScrollViewRecyclerViewRecyclerView内不ScrollView)。

尝试这种方法。

<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:orientation="vertical">

    <include
        android:id="@+id/toolbar"
        layout="@layout/tool_bar" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="140dp" />

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="@android:color/white"
        android:fitsSystemWindows="true">

        <GridLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center_horizontal"
            android:columnCount="2"
            android:rowCount="1">

            <android.support.design.widget.TextInputLayout
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:layout_columnSpan="1"
                android:layout_marginBottom="8dp"
                android:layout_marginTop="8dp">

                <EditText
                    android:id="@+id/editTextPrice"
                    android:layout_width="200dp"
                    android:layout_height="wrap_content"
                    android:layout_column="0"
                    android:layout_gravity="end"
                    android:layout_row="0"
                    android:hint="@string/price"
                    android:inputType="text|number"
                    android:textAlignment="viewEnd" />

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

        </GridLayout>

    </ScrollView>

</LinearLayout>

答案 1 :(得分:1)

尝试将其置于Toolbar下方,如下所示:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical">
<include
    android:id="@+id/toolbar"
    layout="@layout/tool_bar"
    />
<ScrollView
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:background="@color/white"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:fitsSystemWindows="true">

<LinearLayout
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="16dp"
    android:paddingBottom="16dp"
    android:paddingLeft="24dp"
    android:paddingRight="24dp"
    android:weightSum="1"
    android:focusable="true"
    android:focusableInTouchMode="true"
    tools:context=".PostProductActivity">

    <android.support.v7.widget.RecyclerView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="140dp" />

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center_horizontal"
        android:rowCount="1"
        android:columnCount="2">
        <android.support.design.widget.TextInputLayout
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:layout_columnSpan="1"
            android:layout_marginTop="8dp"
            android:layout_marginBottom="8dp">

             <EditText android:id="@+id/editTextPrice"
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:layout_row="0"
                android:layout_column="0"
                android:layout_gravity="end"
                android:inputType="text|number"
                android:hint="@string/price"
                android:textAlignment="viewEnd" />
        </android.support.design.widget.TextInputLayout>

    </GridLayout>
</LinearLayout>