我可以在哪个视图生命周期事件上检查 chip.getLayout()?

on which view lifecycle event can i check chip.getLayout()?

我有 Chip 视图。

我想检查文本是否被省略,如果是 - 用较短的文本替换文本(在 运行 时间)。

我看过这个 code 检查 Chip 中的文本是否为椭圆形。

Layout l = textview.getLayout();
if (l != null) {
    int lines = l.getLineCount();
    if (lines > 0)
        if (l.getEllipsisCount(lines-1) > 0)
            Log.d(TAG, "Text is ellipsized");
}

但是我不知道应该在什么生命周期事件中调用这个方法,至于这一行

Layout l = myAccountView.getLayout();

我得到l = null

我有视图生命周期(包含我的 Chip 的框架布局)

我已尝试检查 onDraw()onLayout()

我也试过从持有框架的对话框中调用

但我知道 inflation 是自上而下的,所以 returns l= nullsetContentView() 上也是如此。

方法 1:myAccountView.getLayout()

之前调用 myAccountView.onPreDraw();

方法 2: 使用 ViewTreeObserver

ViewTreeObserver vtObserver= myAccountView.getViewTreeObserver();
vtObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
       Layout layout = myAccountView.getLayout();  
    }
});