如何同步ScrollViews并在顶部有视图?

时间:2013-12-16 09:27:41

标签: android view scrollview

我想要实现的目标: print-preview

(此图像应代表打印机打印图像的进度)

顶部

顶部栏应代表屏幕上安装的整套作业。较暗的块将告诉您屏幕底部当前可见的内容。根据底部的总宽度,这应该更小或更大。白色条带将告诉您打印机当前正在打印的位置。并且黄色条带会告诉您打印机何时发出警告。

底部

在底部,您可以看到打印图像的全尺寸表示。因为它的全尺寸它将继续在屏幕边框之外。大的白色条带与顶部相同,告诉您打印机的距离。那就是那一刻它正在做什么。

你可以滚动它们,当滚动时,另一个也需要滚动。但是当然如果顶部滚动1px,那么底部需要滚动一点,因为宽度更大。

到目前为止我试图做的事情:

因为两者都需要同步滚动我使用了2个自定义HorizontalScrollviews。我修改了onScrollChanged,因此它将应用此效果。代码如下所示:

@Override
protected void onScrollChanged(int x, int y, int oldx, int oldy) {
    int newX = (int) ((int) x*multiplier);
    super.onScrollChanged(x, y, oldx, oldy);
    scrollView.scrollBy(newX, y);

}

乘数的计算取决于宽度:widthBottom/WidthTop=multiplier

但这并没有产生预期的效果,因为当底部完成滚动时,顶部不会结束。我认为这与顶部的宽度有关,目前它有一个固定的大小,它需要到达屏幕外,否则它不会听到滚动(更改x值)。对于顶部我尝试使用Views创建指标,但我无法动态移动它们。

<View
        android:id="@+id/currentPostition"
        android:layout_width="4dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="40dp"
        android:background="@color/Coconut" />

我尝试通过更改marginleft来移动它们。但这使我的应用程序崩溃。

我想问一下:

  1. 有两个HorizontalScrollviews是解决问题的最佳方法吗?
  2. 动态计算顶部宽度的最佳方法是什么?
  3. 如何在顶部栏中创建指标,Views是最佳解决方案?
  4. 如果我需要添加更多信息,或者某些内容不明确。要求它,我会尽快回复。

1 个答案:

答案 0 :(得分:0)

获取Horizo​​ntalScrollviews中内容的总宽度并将scrollX除以它。 这将为您提供滚动位置的分数值(滚动多少)。

如果您使用的是进度条,请将进度设置为此值。

相关问题