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

java - 设置相对于文本高度的 ImageView 宽度和高度

我有一个列表视图。每行是一个图像和文本。我想缩放图像,使其适合行高,即

  • 图像不应导致行高更大
  • 图像高度应与行高相同
  • 应计算图像宽度,以保持原始宽度高度比

我想出的所有解决方案似乎都太复杂了,我认为这是一个相对常见的要求,所以我想检查一下我是否遗漏了什么——你知道如何以更简单的方式实现这一点吗?

以下是我考虑的解决方案。

解决方案1:

ListView 项目的嵌套视图并设置 android:layout_height="match_parent"。图像已正确调整大小,但 ImageView 占用宽度,就好像它没有调整大小一样。(见下图,我加了黑色背景,看看ImageView占用了多少空间。)

在此处输入图像描述

解决方案 2: 使用

ViewTreeObserver 观察者 = MyTextView.getViewTreeObserver() observer.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {

}

这似乎太复杂了。

解决方案3:

使用,例如,Paint.FontMetrics 来计算高度,但我还需要找出使用的字体(例如,系统一......) ListView 可能有一些填充等,所以有很多东西要检索。

请问还有其他更简单的解决方案吗?

编辑 - 澄清

图像具有最大值。大小,如果达到,将停止 ImageView 大小的任何进一步增加。

0 投票
0 回答
33 浏览

android - 如何知道视图绘图还没有?

固定 : 2018-02-09 , 13:00 (GMT+9)

我把词isDrawing改成!isDrawn


我想使用get width, height afterview drawn

但我也想isDrawn知道

下面的代码可以获得view drawn状态

实际上我想要像下面这样的机制。

0 投票
1 回答
245 浏览

java - 服务中的 ViewTreeObserver.OnWindowFocusChangeListener

如何在 Android 的服务中实现 ViewTreeObserver.OnWindowFocusChangeListener 。当我在我的 java 文件中使用该代码时,它不会显示任何类型的错误。还有其他方法可以在服务中使用 OnWindowFocusChangeListener 吗?请帮我。提前致谢 !!

0 投票
1 回答
362 浏览

android - android view getWidth() 即使在 onPreDraw() 中也返回 0

根据 SOF 中的答案,像这样

onPreDraw与上述问题链接中的问题开启者不同,我已经尝试过足够晚的时间来衡量观点( )。

我有这个代码:

}

尽管如此,measuredWidth并且width始终为 0

如何获取视图的宽度(以像素为单位)?

0 投票
2 回答
110 浏览

android - 当a11y更改为大字体时android视图宽度不会变大

我有一些代码可以测量 android textView 的宽度和要在其中显示的文本。

我将我的设备 a11y 更改为最大的字体和最大的显示。

我在 UI 中看到文本被截断(椭圆形)

在此处输入图像描述

但我的测量结果显示文本宽度(503 像素)小于文本视图宽度(587 像素)。

怎么可能?

我应该如何以不同的方式测量它们,这样我的代码也会指示文本宽度大于文本视图宽度?

编辑:

我试图添加填充,但它没有改变。更改为 a11y 会截断长文本,而不是选择较短的文本。

编辑:

我已经尝试考虑它的填充来计算chipWidth,但是textSize仍然会使文本截断,而它在代码中绘制的大小比视图大小短

0 投票
2 回答
360 浏览

android - textView 动态更改为更短的文本而不是 ellipsize

我有这个代码:

当需要 ellipsize 时,代码应动态更改 textView 中的文本。

但是,当我运行应用程序时,有时我会看到视图(剪辑)的宽度==是长文本宽度,并且 UI 中仍然存在椭圆。

我看到当 textView 是not visible并且切换到时会发生这种情况visible

我应该以不同的方式计算 vlip(视图)宽度吗?

之前测量 textView 的任何特殊方法变成了visible

0 投票
0 回答
637 浏览

android - onGlobalLayout() 在没有明显布局更改的情况下调用

我有一个运行良好的软键盘监听器(一项活动除外)。这里是。

对于所有活动,侦听器等待屏幕更改,然后调用 onGlobalLayout()。但是一项活动 onGlobalLayout() 会立即被调用(无需更改屏幕)。此活动相当独特,因为它暗示了以下内容

PlacesActivity具有AutoCompleteTextView用户在 Google Places API 的帮助下选择全球城市的位置。这些回调是否与我的onGlobalLayoutListener?

onGLobalLayout()在没有明显布局更改的情况下可以调用任何其他情况?

是否AutoCompleteTextView触发onGlobalLayout()

0 投票
0 回答
88 浏览

android - getLineCount 返回方向后的字符数而不是行数

我正在尝试制作一个可扩展的文本视图,它工作正常,但问题是旋转后 textview.getLinesCount() 返回文本视图中的字符数而不是行数,因此它在旋转后无法正常工作!

这是我的代码:

我也试过这种方法getViewTreeObserver().addOnGlobalLayoutListener(),但同样的事情发生了。

0 投票
0 回答
66 浏览

android - 屏幕旋转,使视图大小为 0

我有AppCompatDialogFragment这个代码:

我第一次调用它时,我得到了view定位和膨胀,因为它已经布置好了。

但是当我更改为横向时,我得到了anchorView定位(0,0)width ==0

什么会导致这种配置更改?因为视图是由 id 找到的,所以我等待onGlobalLayout

我再旋转一次,大小仍然为 0。

我可以看到所有旋转后的视图(有一个变暗的屏幕,但它甚至在第一次旋转之前就在那里)

之前和之后看起来一样:

在此处输入图像描述

0 投票
1 回答
34 浏览

android - 线性布局绘制完成后创建 PDF

我正在尝试使用表格布局创建嵌套线性布局的 PDF。我的问题是我最初的尝试导致在没有完整视图的情况下绘制文件。

为了解决这个问题,我决定只在视图加载完成后写入文件,并尝试使用监听事件,ViewTreeObserver.globalOnLayoutListener但它从未被唤起。所以我决定使用View.post()它,它似乎也不起作用。我已经等了 4 分钟,认为可能需要一段时间才能绘制,因为布局文件很大,但是监听器和后来的可运行对象从未被调用过。我使用断点和 logcat 验证了事实。

我哪里错了?