Activity 生命周期 - 接收布局完成的通知

2023-12-28

我有一个活动,其中有 3 个按钮并排放置。我使用了 Button 的子类,它将调整按钮文本的大小以防止文本换行。我希望这 3 个按钮共享相同的文本大小。为了做到这一点,我打算检测具有最小文本大小的按钮,并将其他 2 个按钮设置为该文本大小。

我遇到的问题是知道活动何时完成其组件的布局,以便我可以可靠地知道文本大小已发生调整。从 Android 文档来看,生命周期中的最新通知是 onResume(),但此时布局似乎尚未完成。有没有办法接收活动布局已完成的通知?


我使用 Tree Observers 做了类似的事情。您可能需要稍微尝试一下才能找到它应该附加的视图,但是一旦设置了视图,这就会触发。从那里,您可以获得文本的大小,并进行任何需要的更改。

mTestButton.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        // make sure it is not called anymore 
        mTestButton.getViewTreeObserver().removeGlobalOnLayoutListener(this);

        float size = mTestButton.getTextSize();
    }
});


EDIT:
方法 #removeGlobalOnLayoutListener 已被弃用,但仍然有效。要同时使用新方法和旧方法,请参阅这个 stackoverflow 答案 https://stackoverflow.com/a/16190337/678123.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Activity 生命周期 - 接收布局完成的通知 的相关文章

随机推荐

  • 选择nodeValue但排除子元素

    假设我有这个代码 p Hello this is a description a href Click here for more a p 如何选择的nodeValuep但排除a它的内容是什么 我当前的代码 result xpath gt
  • 步骤中未找到此类 DSL 方法“管道”

    我在 Jenkins 中的声明性管道脚本中不断收到此错误 No such DSL method pipeline found among steps 我的脚本是这样的 pipeline agent any stages stage Exam
  • 谷歌存储桶文件链接可公开访问,即使不公开?

    我正在玩谷歌桶 该存储桶不是公共的 这些文件也不公开 我上传 csv 文件后 我点击它 它在谷歌浏览器的浏览器中显示了带有一个很长的复杂 url 链接的文件 现在 如果我使用该链接并在另一个没有登录谷歌帐户的浏览器 例如 IE 中打开 我就
  • C# - 应用程序显示函数之间的所有依赖关系?

    是否有某种应用程序可以分析源代码并以图形方式显示函数之间的所有连接 我需要它来处理我正在处理的遗留代码 它很大 功能齐全 而且写得很糟糕 NDepend http www ndepend com 正是这样做以及更多其他事情 代码指标
  • 汇编程序文件 (*.asm) 的 gedit 语法突出显示

    默认情况下 gedit 不进行语法高亮显示 asm files 如何添加对此语言的支持 以下步骤应该足够了 wget http www carminebenedetto net downloads asm intel lang sudo c
  • 无法使用 PowerMock 模拟 java.lang.System#exit(int) 方法

    我的应用程序有一个流程 最后是方法System exit int 正在被呼叫 我正在尝试通过使用 TestNG 运行测试来测试此流程 然而 在运行测试时 尽管测试已完成 但我收到了这条奇怪的消息 只是为了找到根本原因 我删除了System
  • 在 AngularJS 中使用 $controller 时如何消除缩小错误

    angular module mainApp controller dynamicRouteController scope controller routeParams function scope controller routePar
  • 如何在mathematica中重载Times和Plus进行矩阵乘法

    我想要超载Times and Plus例如 对于mathematica中的矩阵乘法 让Times be BitAnd 并且加上是BitOr 然后进行矩阵乘法 无论如何 有没有一种简单的方法可以做到这一点 而无需重写我自己的矩阵乘法 Than
  • Flask 多重处理

    我正在尝试开发一个小型应用程序 它基本上会根据用户提供或请求的数据集绘制一些图表 process order 函数应该并发运行不同的数据集 由于某种原因 我只得到第一张图 而不是第二张和连续的图表 我与不同的用户打开了不同的浏览器会话 得到
  • 如何在linq queryable的表达式树中调用sql标量函数?

    我正在为 Iqueryable 创建 lambda 表达式以从集合中获取值 但我想将该值转换为其他数据类型 例如 int 或decimal 因此 由于我无法将 C 转换与 Iqueryable 一起使用 因此我在 sql 中创建了用户定义的
  • 如何修复 SweetAlert2 中奇怪的成功和错误图标?

    因此一月份 SweetAlert2 100 正常 成功和错误图标上没有错误 但二月之后 图标看起来很奇怪 动画也很糟糕 我尝试更新 CDN 因为 2 天前 SweetAlert2 更新了 但问题仍然没有解决 也许你可以帮助我 这是图像 成功
  • 使用 Python 检查 zip 文件中是否存在目录

    最初我想使用os path isdir但我认为这不适用于 zip 文件 有没有办法查看 zip 文件并验证该目录是否存在 我想阻止使用unzip l 尽可能多 但如果这是唯一的解决方案 那么我想我别无选择 只需检查文件名末尾带有 的文件即可
  • 在c中使用信号量同步两个子进程

    我必须创建一个程序来同步两个进程 每个进程只打印一个字母 这样每当我们观察程序的输出时 A and B 不大于2 所以这会被接受 BAABBAABBABA 这不会是因为它打印 4 个 B 只打印 2 个 A ABBABB 因此 对于初学者来
  • 动态创建CheckBoxPreferences

    我目前正在使用网络服务中的内容动态构建带有复选框的行列表 然而 这ListView将需要做很多事情PreferenceActivity会完成 我不知道行数 因为内容是动态的 所以我无法创建每个行CheckBoxPreference在 XML
  • 如何在 Windows 下强制 Git 使用 LF 而不是 CR+LF?

    我想强制 Git 在 Windows 下签出文件LF not CR LF 我检查了两个配置选项 但无法找到正确的设置组合 我想将所有文件转换为LF换行并保留LF在文件中 备注 我用过autocrlf input但这只是在您提交文件时修复文件
  • WebRTC:确定所选的 ICE 候选者

    我有一个 webrtc 应用程序 假设有两个客户端 client1 and client2 有什么办法可以找出 ICE 候选人给出的内容吗 client1被使用client2反之亦然 因为 每次要找出这个问题 我都必须使用wireshark
  • PSQL 8.3+ 客户端查询结果显示

    这是一个相当愚蠢的问题 但我似乎无法在文档或手册页中找到答案 我认为从 8 3 开始 psql CLI 客户端将不会显示大型内联查询的结果 它通过管道传输到一个 不太像 的结果查看器 当您按 q 时该结果查看器就会消失 这使得在后续查询或更
  • 图像在移动设备上正确旋转,而不是在桌面上正确旋转

    我上传的图片遇到了奇怪的问题 当我在 iPhone 和 iPad 上查看它们时 它们会正确旋转 但每当我尝试在桌面上查看它们时 它们都会以错误的方向显示 我找不到错误 在花了几个小时弄乱 EXIF 数据后 我几乎要放弃了 修复方向后 我还调
  • 如何防止用户导航回上一页?

    我有一个 ASP NET MVC 应用程序 具有三个视图 view1 view2 view3 用户浏览这些内容的逻辑方式是 view1 gt view2 gt view3 当用户到达view3 那么我必须阻止它们加载view2 甚至通过使用
  • Activity 生命周期 - 接收布局完成的通知

    我有一个活动 其中有 3 个按钮并排放置 我使用了 Button 的子类 它将调整按钮文本的大小以防止文本换行 我希望这 3 个按钮共享相同的文本大小 为了做到这一点 我打算检测具有最小文本大小的按钮 并将其他 2 个按钮设置为该文本大小