当绘制线变得超过视图大小时,使自定义视图可滚动

时间:2013-09-14 12:06:21

标签: android android-canvas android-custom-view

我正在使用自定义视图和自定义视图的双倍大小的绘图线

以下是我在xml中的自定义视图

     <HorizontalScrollView
    android:layout_width="780dp"
    android:layout_height="300dp"
    android:layout_x="20dp"
    android:layout_y="180dp">     
 <com.john.TestApp.ScrollLineView
    android:id="@+id/RectroGraphView"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent" 
    >
  </com.john.TestApp.ScrollLineView> </HorizontalScrollView>

这是我的ScrollLineView视图类代码。正如您所看到的,我的行是自定义视图的两倍以上。但是当我跑步时,它甚至没有绘制任何线条。

我希望每当我的行超出规模时,自定义视图都必须可滚动。

  public ScrollLineView(Context context, AttributeSet attrs) 
{
    super(context, attrs);

    pTestPaint.setColor(Color.RED);
    setHorizontalScrollBarEnabled(true);
    setWillNotDraw(false);

} 

@Override 
protected void onDraw(Canvas StoredPlotCanvas) 
{ 
     super.onDraw(StoredPlotCanvas);

     StoredPlotCanvas.drawLine(0, 150, 2500, 150, pTestPaint); 
     StoredPlotCanvas.drawLine(0, 200, 1000, 200, pTestPaint); 
}

任何帮助?

1 个答案:

答案 0 :(得分:0)

可以这样做,但您需要在ScrollLineView类中覆盖并实现自定义onMeasure方法。然后,无论何时绘制线条,您都需要调用requestLayout()并在onMeasure方法中调整视图大小,以便可以滚动它。

在我看来,在ScrollLineView中实现自定义滚动会更好。您只需要调整当前绘制的偏移量。