自定义视图未在屏幕范围之外绘制

JMRboosties

我有一个自定义视图,该视图嵌套在ScrollView中。这个想法是自定义视图的长度可以大于屏幕的高度,因此,当您在ScrollView中滑动时,可以看到其所有内容。

为了做到这一点,我像这样调整自定义视图的画布的剪辑:

@Override
public void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    canvas.clipRect(mCanvasArea, Region.Op.REPLACE);
}

其中mCanvasArea是预生成的RectF,它表示画布可以绘制的整个区域。我记录了它的值@ 10308。

但是,当应用程序运行时,自定义视图是不可滚动的,它的作用就像可见内容代表画布中的所有内容一样,但是我可以从屏幕底部看到更多内容。

这是我的视图XML声明:

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@id/activity_toolbar"
    android:fillViewport="true">

    <com.myapp.CustomView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</ScrollView>

(我必须添加fillViewport才能使内容首先显示出来)

为了使视图滚动,还有其他需要做的事情吗?

老的

您需要指定自定义视图的高度,而不是画布的高度。传递给onDraw的画布反映了视图的宽度和高度。

将视图设置为wrap_content并不意味着只要您在其边界之外绘制,它就会增长。它只会“包装”子视图,而不是画布。

要以编程方式设置视图的高度,请执行以下操作:

getLayoutParams().height = 500;
invalidate();

我不确定您到底要做什么,所以我不能过多地确定应该在哪里设置高度,但是我建议您不要在onDraw中更改视图的尺寸,因为当您使它无效时,它会导致再次绘制,您将需要一些时髦的逻辑来处理此递归。

相反,您可以确定构建视图时所需的高度,然后使用类似以下的方法覆盖onMeasure:

public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
  super.onMeasure(widthMeasureSpec, calculatedHeight);
}

这将迫使您的自定义视图进入计算的高度。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

自定义视图未绘制到屏幕范围之外

来自分类Dev

使用Android在视图剪辑范围之外进行绘制时:如何防止底层视图在自定义视图之上绘制?

来自分类Dev

在控制范围之外的自定义绘制下拉面板

来自分类Dev

自定义视图未在GridLayout中绘制

来自分类Dev

未在RecyclerView的最后一个视图上绘制自定义ItemDecoration

来自分类Dev

Android:clipChildren导致自定义视图的背景绘制整个屏幕高度

来自分类Dev

自定义视图未绘制

来自分类Dev

绘制多个自定义视图

来自分类Dev

自定义视图不会绘制位图

来自分类Dev

在自定义Eclipse视图中绘制

来自分类Dev

绘制自定义视图的正确方法?

来自分类Dev

进度栏未在自定义启动屏幕上更新

来自分类Dev

如何在自定义视图之外跟踪点击

来自分类Dev

Ondraw方法未在自定义视图中调用

来自分类Dev

自定义视图:画布绘制方法给出API错误

来自分类Dev

在android中的自定义图片视图上绘制

来自分类Dev

调整自定义视图的报告尺寸以包括绘制的图形

来自分类Dev

Win32自定义绘制树视图控件

来自分类Dev

使用Android自定义视图实时绘制图

来自分类Dev

Android-测试自定义视图是否正确绘制?

来自分类Dev

Android的绘制自定义视图,如谷歌付费

来自分类Dev

如何通过使用自定义视图绘制位图

来自分类Dev

自定义视图到Toast中-不绘制

来自分类Dev

自定义视图按钮的onDraw()方法不会绘制

来自分类Dev

Android:以编程方式绘制自定义视图

来自分类Dev

实现自定义绘制的NSMenuItem视图的简单方法

来自分类Dev

自定义视图 - 由线条绘制的圆角矩形的角

来自分类Dev

自定义视图,例如android的锁定/解锁屏幕

来自分类Dev

自定义视图不能填满整个屏幕

Related 相关文章

  1. 1

    自定义视图未绘制到屏幕范围之外

  2. 2

    使用Android在视图剪辑范围之外进行绘制时:如何防止底层视图在自定义视图之上绘制?

  3. 3

    在控制范围之外的自定义绘制下拉面板

  4. 4

    自定义视图未在GridLayout中绘制

  5. 5

    未在RecyclerView的最后一个视图上绘制自定义ItemDecoration

  6. 6

    Android:clipChildren导致自定义视图的背景绘制整个屏幕高度

  7. 7

    自定义视图未绘制

  8. 8

    绘制多个自定义视图

  9. 9

    自定义视图不会绘制位图

  10. 10

    在自定义Eclipse视图中绘制

  11. 11

    绘制自定义视图的正确方法?

  12. 12

    进度栏未在自定义启动屏幕上更新

  13. 13

    如何在自定义视图之外跟踪点击

  14. 14

    Ondraw方法未在自定义视图中调用

  15. 15

    自定义视图:画布绘制方法给出API错误

  16. 16

    在android中的自定义图片视图上绘制

  17. 17

    调整自定义视图的报告尺寸以包括绘制的图形

  18. 18

    Win32自定义绘制树视图控件

  19. 19

    使用Android自定义视图实时绘制图

  20. 20

    Android-测试自定义视图是否正确绘制?

  21. 21

    Android的绘制自定义视图,如谷歌付费

  22. 22

    如何通过使用自定义视图绘制位图

  23. 23

    自定义视图到Toast中-不绘制

  24. 24

    自定义视图按钮的onDraw()方法不会绘制

  25. 25

    Android:以编程方式绘制自定义视图

  26. 26

    实现自定义绘制的NSMenuItem视图的简单方法

  27. 27

    自定义视图 - 由线条绘制的圆角矩形的角

  28. 28

    自定义视图,例如android的锁定/解锁屏幕

  29. 29

    自定义视图不能填满整个屏幕

热门标签

归档