如何在可滚动的RelativeLayout中启用LinearLayout内的滚动

时间:2017-05-24 08:36:48

标签: android

我已经尝试了几种方法来实现这一点,但到目前为止还没有成功。 需要使用主ScrollView来启用片段之间的滚动。 RelativeLayout就在那里,所以我们在所有片段的父屏幕底部对齐“Back / Save / Done”按钮。

现在在我的代码中,我以编程方式将TableLayouts添加到LinearLayout下面(我还尝试使用GridViews而不是TableLayouts)。

            <LinearLayout
                android:id="@+id/layout"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_above="@+id/PageRadioGroup"
                android:layout_alignParentTop="true"
                android:layout_marginTop="3dp"
                android:orientation="vertical" >
            </LinearLayout>

这个LinearLayout不可滚动,问题是我有4个表,只有第一个表可见。如果我将LinearLayout包含在ScrollView / NestedScrollView中,那么主要的父ScrollView将被禁用。

如何在主ScrollView中保持滚动,保持RelativeLayout结构,同时允许在子LinearLayout中滚动以查看其中的所有表。

这是我的布局xml

 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:fillViewport="true" >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="5dp" >

            <RadioGroup
                android:id="@+id/PageRadioGroup"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true"
                android:layout_marginBottom="19dp"
                android:clickable="false"
                android:orientation="horizontal" >

                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:checked="true"
                    android:clickable="false" />

                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:clickable="false" />

                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:clickable="false" />
            </RadioGroup>

            <android.support.v4.view.ViewPager
                android:layout_width="match_parent"
                android:layout_height="349dp"
                android:layout_above="@+id/PageRadioGroup"
                android:layout_alignParentStart="true"
                android:layout_alignParentTop="true"
                android:focusableInTouchMode="true" >
            </android.support.v4.view.ViewPager>

            <Button
                android:id="@+id/btnBack"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentStart="true"
                android:text="@string/back"
                android:textAllCaps="false" />

            <Button
                android:id="@+id/btnSave"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentEnd="true"
                android:text="@string/save"
                android:textAllCaps="false"/>

            <Button
                android:id="@+id/btnDone"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentEnd="true"
                android:layout_alignStart="@+id/btnSave"
                android:text="@string/done"
                android:textAllCaps="false" />

            <LinearLayout
                android:id="@+id/layout"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_above="@+id/PageRadioGroup"
                android:layout_alignParentTop="true"
                android:layout_marginTop="3dp"
                android:orientation="vertical" >
            </LinearLayout>
        </RelativeLayout>

    </ScrollView>

谢谢!

1 个答案:

答案 0 :(得分:0)

我设法实现了我想要的目标。下面是更新的布局xml。我认为主要的解决方法是将ViewPager的高度更改为wrap_content。然后我将一个NestedScrollView添加到LinearLayout。这些表以编程方式添加到LinearLayout,android:id =“@ + id / Layout”。

<?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:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="5dp" >

        <RadioGroup
            android:id="@+id/PageRadioGroup"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="19dp"
            android:clickable="false"
            android:orientation="horizontal" >

            <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:checked="true"
                android:clickable="false" />

            <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:clickable="false" />

            <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:clickable="false" />
        </RadioGroup>

        <android.support.v4.view.ViewPager
            android:id="@+id/Pager"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_above="@+id/PageRadioGroup"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:focusableInTouchMode="true" >
        </android.support.v4.view.ViewPager>

        <Button
            android:id="@+id/btnBack"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentStart="true"
            android:text="@string/back"
            android:textAllCaps="false"/>

        <Button
            android:id="@+id/btnSave"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentEnd="true"
            android:text="@string/save"
            android:textAllCaps="false"/>

        <Button
            android:id="@+id/btnDone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentEnd="true"
            android:layout_alignStart="@+id/btnSave"
            android:text="@string/done"
            android:textAllCaps="false" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_above="@+id/PageRadioGroup"
            android:layout_alignParentTop="true"
            android:layout_marginTop="3dp"
            android:nestedScrollingEnabled="true"
            android:orientation="vertical" >

            <android.support.v4.widget.NestedScrollView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="3dp"
                android:isScrollContainer="true" >

                <LinearLayout
                    android:id="@+id/Layout"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:nestedScrollingEnabled="true"
                    android:orientation="vertical" >
                </LinearLayout>
            </android.support.v4.widget.NestedScrollView>
        </LinearLayout>
    </RelativeLayout>

</ScrollView>