如果内部布局有边距,则scrollview无效

时间:2014-08-19 08:28:39

标签: android android-layout scrollview

我在ScrollView中遇到奇怪的问题,其中包含带有topMargin的relativeLayout

<ScrollView
    android:id="@+id/scroll_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:descendantFocusability="beforeDescendants"
    android:fillViewport="true"
    android:focusableInTouchMode="true">

    <RelativeLayout
        android:id="@+id/cp_editor_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/white"
        android:layout_marginTop="270dp"
        >
    ...

此代码示例不起作用。大约20px后滚动停止。如果我删除margin_top属性,则滚动按预期工作。

感谢您的帮助

1 个答案:

答案 0 :(得分:4)

我不明白topMargin停止滚动的问题。但是,为了获得所需的余量并保持滚动功能,我可以想到两个解决方案:

1)添加一个与您想要的边距高度相同的无关视图,并将其放在相对布局(cp_editor_layout)上方。它看起来像这样:

<ScrollView
    android:id="@+id/scroll_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:descendantFocusability="beforeDescendants"
    android:fillViewport="true"
    android:focusableInTouchMode="true">

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

        <View
            android:layout_width="match_parent"
            android:layout_height="270dp" />

        <RelativeLayout
            android:id="@+id/cp_editor_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/white" >

        </RelativeLayout>

    </LinearLayout>

2)为您的滚动视图提供边距上边距,因为无论如何都不需要该空间。如果您要进行某种类型的过度滚动,则需要对ScrollView进行子类化。

希望这能以某种方式帮助你:)