【发布时间】:2011-01-04 06:05:48
【问题描述】:
我有一个与两个同步滚动有关的棘手问题 不同的看法。 我制作了自己的自定义网格视图小部件,它具有“粘性”视图 left 和 top 表示只在一个方向上用网格。想一个 日历,顶部有时间,左侧有日期,以及时间 你水平滚动时间,日期视图应该保持不变, 当您垂直滚动日期时,时间视图应该 留在原地。
网格本身是使用嵌套的水平滚动视图实现的 垂直滚动视图。网格运行良好,所以那里没有问题。 由于粘性视图不在实际网格中,因此我已覆盖 onScrollChanged 在网格滚动视图中并以编程方式调用 当用户滚动网格时,scrollTo 在粘性视图上。
这按预期工作,只是有一点时间偏移 到两个不同的视图开始滚动和结束滚动的时间。它 当您认为可能执行了滚动时,这是有道理的 我想在 UI 线程上线性地..
所有视图都是滚动视图,并且我启用了平滑滚动 并使用smoothScrollTo等,而不是尝试改进这一点,但它 但是同样的问题。这个问题在 更大的屏幕,例如三星 Galaxy Tab,而几乎没有 在中小型屏幕设备上很明显。
感谢任何帮助!如果有一个简单的解决方法,那就太好了..如果这意味着 新设计(满足上面的粘性视图用例),就这样吧。
触发程序的代码。滚动,水平方向相同
@Override
protected void onScrollChanged(int x, int y, int oldx, int oldy) {
mListener.onScrollY(y);
super.onScrollChanged(x, y, oldx, oldy);
}
// which leads to,
// Handle vertical scroll
public void onScrollY(final int y) {
mCurrentY = y;
mVerticalScroll.smoothScrollTo(0, y);
}
下面的 XML 布局,如果有帮助的话
实际的网格,它是一个水平滚动视图包裹在一个垂直滚动视图中,并且网格项垂直添加到嵌套的线性布局中
>
< com.....VerticalScrollView
android:id="@+id/gridscroll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@id/timescroll"
android:layout_toRightOf="@id/vertscroll"
android:layout_alignTop="@id/vertscroll"
android:layout_marginLeft="2dp" android:scrollbars="none"
android:fadingEdge="none">
< com....HorizScrollView
android:id="@+id/horizscroll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="none"
android:fadingEdge="none">
< LinearLayout android:id="@+id/grid"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
< /LinearLayout>
< /com.....HorizScrollView>
< /com.....VerticalScrollView>
水平粘性视图
< com.....GridTimeScrollView
android:id="@+id/timescroller"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="none"
android:fadingEdge="none">
< LinearLayout android:id="@+id/timelist"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" />
< /com.....GridTimeScrollView>
垂直粘性视图
< com....GridVertListScrollView
android:id="@+id/vertscroller"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="none"
android:fadingEdge="none">
< LinearLayout
android:id="@+id/vertitemlist"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" />
< /com.....GridVertListScrollView>
【问题讨论】:
标签: android gridview scroll scrollview