Android 如何同步滚动视图并使视图位于顶部?

Android 如何同步滚动视图并使视图位于顶部?,android,view,scrollview,Android,View,Scrollview,我想要实现的目标: (此图像应表示打印机打印图像的进度) 顶部部分 顶部栏应表示屏幕上安装的整套作业。较暗的块将告诉您屏幕底部当前可见的内容。根据底部零件的总宽度,该尺寸应更小或更大。白色条带将告诉您打印机当前打印的位置。当打印机出现一些警告时,黄色条带会告诉您 底部部分 在底部,您可以看到打印图像的全尺寸表示。因为它的全尺寸将继续在屏幕边界之外。白色大条与顶部相同,告诉您打印机有多远。那么它当时在做什么呢 您可以滚动两个页面,当一个页面滚动时,另一个页面也需要滚动。但当然,如果顶部滚动1px

我想要实现的目标:

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

顶部部分

顶部栏应表示屏幕上安装的整套作业。较暗的块将告诉您屏幕底部当前可见的内容。根据底部零件的总宽度,该尺寸应更小或更大。白色条带将告诉您打印机当前打印的位置。当打印机出现一些警告时,黄色条带会告诉您

底部部分

在底部,您可以看到打印图像的全尺寸表示。因为它的全尺寸将继续在屏幕边界之外。白色大条与顶部相同,告诉您打印机有多远。那么它当时在做什么呢

您可以滚动两个页面,当一个页面滚动时,另一个页面也需要滚动。但当然,如果顶部滚动1px,底部则需要再滚动一点,因为宽度更大

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

因为两者都需要同步滚动,所以我使用了2个自定义
水平滚动视图
。我修改了
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);

}
根据宽度计算乘数:
widthbooth/WidthTop=乘数

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

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

我试着通过改变左边的边缘来移动它们。但这让我的应用程序崩溃了

我想问的是:

  • 两个
    水平滚动视图是否是解决问题的最佳方法
  • 动态计算顶部宽度的最佳方法是什么
  • 如何在顶部栏中创建指标,
    视图
    是最佳解决方案吗

  • 如果我需要补充更多的信息,或者有些不清楚的地方。询问它,我会尽快回复。

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

    如果使用进度条,请将进度设置为该值