问题标签 [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.

0 投票
0 回答
140 浏览

android - 如何检测菜单弹出android?

有什么方法可以检测菜单弹出窗口何时显示?

在我点击溢出菜单后。未检测到包含设置、游览、演练的菜单。

在此处输入图像描述

我尝试了 ViewTreeObserver 方法,例如

ViewTreeObserver.OnGlobalLayoutListener、ViewTreeObserver.OnGlobalFocusChangeListener、ViewTreeObserver.OnWindowAttachListener、ViewTreeObserver.OnWindowFocusChangeListener

但是没有调用任何方法。

有没有我可以听的chich的听众。?

0 投票
7 回答
18424 浏览

android - 如何在 Android 中以编程方式禁用表情符号

我想以编程方式从键盘隐藏表情符号和自动建议。它适用于某些 Android 设备,但不适用于所有设备。这是我隐藏自动建议的代码:

这是我的用户界面的快照:

在此处输入图像描述

这是用户单击登录按钮时的布局。当用户点击标记为红色的左下角图标时,由于表情符号作为建议,键盘高度会增加。

请参见下面的快照:

在此处输入图像描述

有没有办法以编程方式从键盘隐藏那些顶级表情符号?

0 投票
1 回答
2837 浏览

android - Android - ViewTreeObserver 不调用 onGlobalLayout

我对当前的 Android 项目感到头疼。我想检测当前页面的变化。比如有一个TextView来显示设备时间,每秒更新一次。如何检测这种变化?我在 SO 上搜索了很多(谢谢 SO),但没有一个对我有用。

更多信息:我不使用标准活动来创建页面。我的方法是:所有小部件都创建到一个 View 对象中,然后用于创建一个容器对象。之后,我只处理这个容器以定期使用VSYNC回调Choreographer.FrameCallback在画布上绘制。

确实,它可以画画。一切正常。除了:我只想在页面内容更改时绘制画布。所以回到我开始的问题,如何检测这个“变化”的事件?我确信有某种回调来处理这个问题。我使用了以下解决方案,但是当 textview 的文本更改时不会调用onGlobalLayout 。

顺便说一句:即使我为 textview 注册了视图树观察器,仍然没有调用 onGlobalLayout。

谢谢

0 投票
2 回答
1100 浏览

android - 从 addOnPreDrawListener() 获取值

我不明白如何从下面的方法返回值,我试图返回int,但它向我显示了一个无法解决的奇怪错误。这是代码:

我知道方法中没有更新值,因为当我使用setText()方法时,int值是 0。

0 投票
1 回答
252 浏览

c# - Xamarin.Android,如何取消订阅 View Tree Observer

我有一个像这样的视图树观察器:

它应该做的是在布局视图后找到宽度,它做得很好。我只是不知道如何阻止它一遍又一遍地运行。

以上基本上是基于提出的建议。这只会使应用程序崩溃。当我摆脱“IsAlive”时,循环将永远继续。在第一次绘制和布局之后,我似乎无法找到阻止它的方法。

0 投票
2 回答
13003 浏览

java - 为什么我们使用 ViewTreeObserver#addOnGlobalLayoutListener()

我们为什么要使用ViewTreeObserver,请任何人解释一下吗?

在下面的代码creditsView中是TextView对象。通过整个代码,我了解到“这是根据条件隐藏一些文本”,但唯一的问题是我们为什么要使用ViewTreeObserver

0 投票
0 回答
295 浏览

android - 我可以用什么替换被声明为隐藏的 ViewTreeObserver.OnComputeInternalInsetsListener?

我尝试在我的库中导入一些 android 内部源代码。但是我在导入这部分代码时遇到了一些麻烦:

这是因为在 ViewTreeObserver.java OnComputeInternalInsetsListener 被声明为隐藏

后来我像这样使用它

所以我可以用什么来代替ViewTreeObserver.OnComputeInternalInsetsListenerremoveOnComputeInternalInsetsListeneraddOnComputeInternalInsetsListener?我什至不知道这些功能的目的......

0 投票
3 回答
5197 浏览

android - 查看绘制完成回调

什么事件表明 a 的抽签View完成了?

我知道ViewTreeObserver听众,但我找不到“最终”的,这表明工作已经完成。

0 投票
0 回答
68 浏览

android - 避免来自 ViewTree onScrollChanged() 的项目

ViewTreeObserver.OnScrollChangedListener用来确定何时ScrollView达到底部。

这是我的布局:

我正在以编程方式添加一个ViewPagerFrameLayoutinScrollView并且它具有定期更改页面的计时器。

自从

onScrollChanged()是在视图树中的某些内容被滚动时调用的回调方法。

onScrollChanged()每次ViewPager页面更改时都会调用。

需要onScrollChanged()在滚动ScrollView. 有没有办法做到这一点?

PS:我不能放在FrameLayout(ViewPager)外面ScrollView

0 投票
0 回答
590 浏览

android - 检测 ViewTreeObserver 全局布局最后一次调用

我看过很多关于 ViewTreeObserver 的问题(和答案),但没有一个完全回答我面临的问题/问题。所以这就是我所拥有的:

我在滚动视图中以编程方式添加了一些视图。设置完所有布局后,我想滚动到滚动视图内的特定视图。为此,我使用 View Tree Observer,代码如下(我正在做的一些伪)

注意:我添加的原因firstTime == 3是,在这种特定情况下,我注意到它只调用了全局布局 3 次。

所以我的问题如下:我怎样才能干净地检测全局布局何时完成所有必要的测量?

是的,我有一些解决方法,比如添加一个小的延迟,这将为全局布局提供时间来完成它的措施,但我正在寻找另一种(更清洁)的方法来做到这一点。

有任何想法吗?谢谢!