问题标签 [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 投票
3 回答
3235 浏览

android - 为什么在 onResume() 中对 View 调用 getWidth() 返回 0?

我读过的所有内容都说你不能在构造函数中调用or getWidth(),但我在. 屏幕的布局不应该已经画好了吗?getHeight()ViewonResume()

0 投票
1 回答
449 浏览

android - Android #View.getHeight() doesn't return correct value

I have a listView in my screen. This listView fills 2/3 of my screen (so its height varies on different devices). I have - lets say 50 items in my array list - but I need to put X number of items in it which is visible to the user (e.g on small screen 3, on normal screen 5, on tablet 8).

So the way I'm doing is getting the height of listView in PX, then get its DP size and since I know the height of each row is 60dp then divide height of listViwe in DP format to height of row (which 60dp). So it returns number of items that will be visible to the user and I pass this number to getCount() method of my adapter to populate this amount of items.

This is my code, I have an observer that will be assigned some where in onCreate() method like this this.mListView.getViewTreeObserver().addOnGlobalLayoutListener(mListViewGlobalListener);

Now when I run the app I have following log: E/TEST: heightInPx:96, heightInDp:32, maxDisplayDriver:0

I believe the height is wrong because I can put at least 4 items in my screen that will be 240dp, while the log shows something else.

0 投票
0 回答
400 浏览

android - 在没有 ViewTreeObserver 的情况下获取软键盘的高度

我目前通过使用 ViewTreeObserver 来获取软键盘的高度,例如:

但是现在我需要在显示之前获取软键盘的高度,因为我们需要另一个视图具有与软键盘完全相同的高度。我怎么能那样做?

提前致谢

0 投票
0 回答
165 浏览

java - 在配置更改期间处理可运行线程

使用以下代码,我想知道如何在一个活动中同时处理 Runnable 对象(用于计时器)和 ViewTreeObserver(用于处理纵向和横向之间的配置更改),因为我的视图(linearLayout)直到稍后才被识别:

主要活动:

显现:

...这是 logcat 的输出:

... 等等。

如果有的话,我可以考虑在 run() 中将 Handler 的 postDelayed 方法设置为 100 毫秒……但是,还有什么比这更有效的吗?

谢谢!

0 投票
1 回答
3798 浏览

android - ViewTreeObserver 为 getMeasuredHeight() 方法提供空指针异常

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'android.view.ViewTreeObserver android.view.View.getViewTreeObserver()'

在这里,我想获取使用 include tag 包含的标题布局的高度。

我还向包含的布局(header_layout)提供了 id,它的 ID 是ly_include。我正在使用下面的代码来测量布局的高度,但它给出了上述错误。

我声明了包含视图并初始化如下

下面是 ViewTreeObserver 代码

下面是日志

0 投票
2 回答
101 浏览

java - 如何在布局内绘制布局

我有一个应用程序,在单击统计信息后,我调用了 StatsFragment。StatsFragment 使用具有 TabLayout 和 CustomViewPager 的 fragment_stats xml 布局。但是,当我单击统计信息时,我的 StatsFragment 被称为数据并没有在那里绘制。在我点击一些标签数据后,就会出现。问题在于初始绘图。从你如何知道何时绘制了布局?我知道我会以某种方式使用 ViewTreeObserver 但无法找到在哪里以及如何使用的方式。

片段统计 xml 文件:

tab_fragment xml 文件:

StatsFragment java 文件:

0 投票
0 回答
295 浏览

android - 每个列表视图项Android中的自定义省略号

我已经实现了一个列表视图,其中需要以下格式的文本视图省略号。我有一个填充在文本视图上的名称列表。当它被省略时,我需要显示剩余的名称数量作为计数。

我有6个名字。当其中 3 个被附加时,它会被省略;然后它将显示如下:

姓名1,姓名2,姓名...(+3)

我的代码:

我已经用viewtreeobserverin getViewof adapter试过了,但它不起作用。我能做些什么?

0 投票
2 回答
973 浏览

android - Android ViewTreeObserver 还能活多久?

我正在开发一个应用程序,它监听 View 事件,如滚动、使用 ViewTreeObserver 绘制的布局。ViewTreeObserver 有一种方法可以在做任何事情之前检查它是否还活着,例如。添加听众。

我必须重现死/不活 ViewTreeObserver 的问题,以查看我的代码在生产中是否运行良好。我在 android 文档中看不到任何重现它的内容。

我感谢任何帮助/指示。

谢谢

0 投票
0 回答
49 浏览

android - 如何在地图标记对象上使用 ViewTreeObserver?

我有一个自定义地图标记,我想根据标记的文本进行缩放。我想检索这个标记的宽度。我面临的问题是,当应用程序首次启动时,宽度值为 0。我得到宽度太早了。但我无法让 ViewTreeObserver 实际工作。我做错了什么,是否有可能我没有参考正确的观点?

XML 如下所示

提前谢谢你!

0 投票
1 回答
740 浏览

android - Android 上的键盘高度

我通过执行 ViewTreeObserver.OnGlobalLayoutListener 来获得 Android 上的键盘高度:

我的问题是,在某些设备上,我的键盘高度是状态栏高度的两倍。到底是怎么回事?我该如何解决这个问题?

提前致谢