问题标签 [android-viewtreeobserver]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android - ViewTreeObserver 不调用 onGlobalLayout
我对当前的 Android 项目感到头疼。我想检测当前页面的变化。比如有一个TextView来显示设备时间,每秒更新一次。如何检测这种变化?我在 SO 上搜索了很多(谢谢 SO),但没有一个对我有用。
更多信息:我不使用标准活动来创建页面。我的方法是:所有小部件都创建到一个 View 对象中,然后用于创建一个容器对象。之后,我只处理这个容器以定期使用VSYNC回调Choreographer.FrameCallback在画布上绘制。
确实,它可以画画。一切正常。除了:我只想在页面内容更改时绘制画布。所以回到我开始的问题,如何检测这个“变化”的事件?我确信有某种回调来处理这个问题。我使用了以下解决方案,但是当 textview 的文本更改时不会调用onGlobalLayout 。
顺便说一句:即使我为 textview 注册了视图树观察器,仍然没有调用 onGlobalLayout。
谢谢
android - 从 addOnPreDrawListener() 获取值
我不明白如何从下面的方法返回值,我试图返回int
,但它向我显示了一个无法解决的奇怪错误。这是代码:
我知道方法中没有更新值,因为当我使用setText()
方法时,int
值是 0。
c# - Xamarin.Android,如何取消订阅 View Tree Observer
我有一个像这样的视图树观察器:
它应该做的是在布局视图后找到宽度,它做得很好。我只是不知道如何阻止它一遍又一遍地运行。
以上基本上是基于提出的建议。这只会使应用程序崩溃。当我摆脱“IsAlive”时,循环将永远继续。在第一次绘制和布局之后,我似乎无法找到阻止它的方法。
java - 为什么我们使用 ViewTreeObserver#addOnGlobalLayoutListener()
我们为什么要使用ViewTreeObserver
,请任何人解释一下吗?
在下面的代码creditsView
中是TextView
对象。通过整个代码,我了解到“这是根据条件隐藏一些文本”,但唯一的问题是我们为什么要使用ViewTreeObserver
?
android - 我可以用什么替换被声明为隐藏的 ViewTreeObserver.OnComputeInternalInsetsListener?
我尝试在我的库中导入一些 android 内部源代码。但是我在导入这部分代码时遇到了一些麻烦:
这是因为在 ViewTreeObserver.java OnComputeInternalInsetsListener 被声明为隐藏
后来我像这样使用它
所以我可以用什么来代替ViewTreeObserver.OnComputeInternalInsetsListener
,removeOnComputeInternalInsetsListener
和addOnComputeInternalInsetsListener
?我什至不知道这些功能的目的......
android - 查看绘制完成回调
什么事件表明 a 的抽签View
完成了?
我知道ViewTreeObserver
听众,但我找不到“最终”的,这表明工作已经完成。
android - 避免来自 ViewTree onScrollChanged() 的项目
我ViewTreeObserver.OnScrollChangedListener
用来确定何时ScrollView
达到底部。
这是我的布局:
我正在以编程方式添加一个ViewPager
到FrameLayout
inScrollView
并且它具有定期更改页面的计时器。
自从
onScrollChanged()
是在视图树中的某些内容被滚动时调用的回调方法。
onScrollChanged()
每次ViewPager
页面更改时都会调用。
我只需要onScrollChanged()
在滚动ScrollView
. 有没有办法做到这一点?
PS:我不能放在FrameLayout(ViewPager)
外面ScrollView
。
android - 检测 ViewTreeObserver 全局布局最后一次调用
我看过很多关于 ViewTreeObserver 的问题(和答案),但没有一个完全回答我面临的问题/问题。所以这就是我所拥有的:
我在滚动视图中以编程方式添加了一些视图。设置完所有布局后,我想滚动到滚动视图内的特定视图。为此,我使用 View Tree Observer,代码如下(我正在做的一些伪)
注意:我添加的原因firstTime == 3
是,在这种特定情况下,我注意到它只调用了全局布局 3 次。
所以我的问题如下:我怎样才能干净地检测全局布局何时完成所有必要的测量?
是的,我有一些解决方法,比如添加一个小的延迟,这将为全局布局提供时间来完成它的措施,但我正在寻找另一种(更清洁)的方法来做到这一点。
有任何想法吗?谢谢!