我有一个活动,其中有 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(使用前将#替换为@)