我正在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>
这是我所指的插图。这应该有助于解释我的布局应该如何结束。
有没有人知道如何在两个方向上实现滚动,并且两个方向都有固定位置的视图?
答案 0 :(得分:1)
我发现很容易将左侧的按钮从两个滚动视图中移出并监听onScrollChanged
,并且每当滚动垂直滚动视图时,都会相应地滚动按钮。因此,当调用onScroll()
时,我将按钮放在滚动视图中并在此滚动视图上调用onScrollChanged()
。
有关如何扩展ScrollView以实现onScrollChanged()
的详细说明,请参阅this answer。