固定两个方向上滚动视图内元素的位置

时间:2012-02-05 18:12:59

标签: android xml layout scrollview horizontal-scrolling

我正在Android应用程序中构建一个视图,它应该横向和纵向滚动。因此,我用水平滚动视图包围了我的视图,在这个水平滚动视图中,我有另一个滚动视图(垂直滚动视图)。

在滚动视图的顶部,我有一个时间轴(图中红色)。滚动垂直滚动视图时,时间轴应为静态。它应该保持在顶部。因此,此时间轴始终显示在顶部。

在这些滚动视图的左侧,我有五个按钮(图中的颜色不同)。这些按钮应该使用垂直滚动视图而不是水平滚动视图滚动,这意味着这些按钮应始终在左侧可见。

滚动视图中的白色区域将双向滚动。

我设法让时间轴(插图中的红色)保持在顶部,只滚动水平滚动视图,但我无法弄清楚我应该把五个按钮放在哪里以确保,这些也将保持在最顶层并且只能使用垂直滚动视图滚动。

这是我的布局,现在时间线保持在最高位置。

<!-- Horizontal scroll view -->
<HorizontalScrollView android:id="@+id/schedule_concerts_scroll_view" 
                      android:layout_width="wrap_content"
                      android:layout_height="fill_parent" 
                      android:fadingEdge="none" 
                      android:scrollbars="none"
                      android:layout_below="@+id/schedule_day_pager_layout">

    <!-- Scroll container for horizontal scroll view -->
    <RelativeLayout android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:id="@+id/schedule_layout">

        <!-- The timeline (red in the illustration) Should only scroll horizontal and stay at top -->
        <RelativeLayout android:id="@+id/schedule_timeline"
                        android:layout_width="wrap_content"
                        android:layout_height="23dp"
                        android:layout_marginBottom="0dp"
                        android:layout_alignParentTop="true" />

        <!-- Vertical scroll view -->
        <ScrollView android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:fadingEdge="none"
                    android:scrollbars="none"
                    android:layout_below="@+id/schedule_timeline">

            <!-- Scroll container for vertical scroll view -->
            <RelativeLayout android:layout_width="wrap_content"
                            android:layout_height="wrap_content">

                <!-- The content here should be scrolling both ways -->

            </RelativeLayout>

        </ScrollView>

    </RelativeLayout>

</HorizontalScrollView>

这是我所指的插图。这应该有助于解释我的布局应该如何结束。

Illustration of scroll directions

有没有人知道如何在两个方向上实现滚动,并且两个方向都有固定位置的视图?

1 个答案:

答案 0 :(得分:1)

我发现很容易将左侧的按钮从两个滚动视图中移出并监听onScrollChanged,并且每当滚动垂直滚动视图时,都会相应地滚动按钮。因此,当调用onScroll()时,我将按钮放在滚动视图中并在此滚动视图上调用onScrollChanged()

有关如何扩展ScrollView以实现onScrollChanged()的详细说明,请参阅this answer