0

我有一个芯片视图。

我想检查文本是否是椭圆形的,如果是这样 - 用较短的文本替换文本(在运行时)。

我看过这段代码来检查芯片中的文本是否是椭圆的。

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

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

我试图检查onDraw()并进入onLayout()

我也尝试从保存框架的对话框中调用

但我知道通货膨胀是自上而下的,所以它也会卷土重来l= nullsetContentView()

4

1 回答 1

0

方法1:myAccountView.onPreDraw();在之前打电话myAccountView.getLayout()

方法 2:使用 ViewTreeObserver

ViewTreeObserver vtObserver= myAccountView.getViewTreeObserver();
vtObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
       Layout layout = myAccountView.getLayout();  
    }
});
于 2018-08-01T18:18:15.767 回答