当前位置: 首页 > 面试题库 >

强制视图重绘自身

焦苏燕
2023-03-14
问题内容

我创建了一个自定义视图(我们称之为MyView),该视图基本上只是使用画布在其自身上绘制一些文本。使用全局变量设置要绘制的文本。

在程序执行过程中的某个时候,我想更改全局变量,并MyView重新绘制自身以更新文本。我尝试过findViewById()然后invalidate(),但这无济于事。我怀疑既然内的任何MyView内容都没有改变,它认为没有理由打电话给我onDraw()。是否有任何方法可以强制视图重新绘制自身,即使它认为不需要重新绘制它呢?


问题答案:

如果我在MyView内部有一个用于存储文本的成员变量,并为其创建一个公共的setter,则仅调用该方法将导致MyView重绘自身

在中设置变量View将不会在视图上调用绘制。实际上,视图系统既不了解也不关心内部变量。

invalidate()在视图上调用会使其通过视图进行绘制。您应该查看以下内容:http : //developer.android.com/guide/topics/ui/custom-
components.html

TextView,当你调用内部本身无效setText()与通过新的文本集和重绘自己setText()的呼叫。您也应该做类似的事情。



 类似资料:
  • 我的问题是,我需要制作一个不断更新的GUI,因为我得到的值可以从数据库中更改,并且我在图形区域中遇到了一些问题。 我使用Graphics2D中的Drawline和Drawstring打印数据库中的值,这些字符串和线条移动并更改值,所以我需要调用repaint();使用计时器使它们出现在jpanel中,问题是repaint();不是在绘制之前移除背景中的旧绘画,而是当我完全调整所有更新的大小时。 我

  • 问题内容: 我在程序开始时,根据数据库中的某些内容,以编程方式在JScrollPane中添加了许多组件(JPanels,JLabels等)。 似乎对于GUI(?)而言,此过程太快了,因此JScrollPane并不总是正确更新,即,即使内部JPanel大于可见区域,滚动条也不可见。 调整窗口大小(JFrame)可以解决此问题,因为我认为Java在调整组件大小时会重新打印它们。 作为测试,我添加了一个

  • 问题内容: 我有一些琐碎的JavaScript可以实现样式更改: 在最新版本的FF,Opera和IE上可以正常使用,但在最新版本的Chrome和Safari上无法使用。 它影响了两个后代,它们恰好是兄弟姐妹。第一个同级更新,但第二个不更新。第二个元素的子元素也具有焦点,并包含 < a>标记,该标记在 onclick 属性中包含上述代码。 如果我微调(例如取消选中和选中) 任何 元素的 任何 属性,

  • 问题内容: 该问题已经被提出,并且在这里已经接受了答案,但是接受的答案不是我想要的。我想使用一个customview,其中的槽口采用宽度+所经过的视图的一定边距,例如上图中的付款图标。虽然寻找到它拥有一个晶圆厂像bottomappbar 这个我看到了一个叫做类边缘治疗类我想这可以作为很好。我现在不会发布我的customview代码,因为我只能绘制一个矩形。 问题答案: 您需要使用绘制曲线Cubic

  • 我该怎么做才能在我自己的视图上使用freehanf手指画?

  • 我正在尝试开发一个应用程序,允许我在录制视频时绘制视频,然后将录制的视频和视频保存在一个mp4文件中供以后使用。另外,我想使用camera2库,特别是我需要我的应用程序在高于API 21的设备上运行,我总是避免使用不推荐的库。 我尝试了很多方法,包括FFmpeg,其中我放置了TextureView的覆盖层。getBitmap()(来自摄影机)和从画布获取的位图。它工作正常,但由于它的功能很慢,视频