我可以在哪个视图生命周期事件上检查 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= null
在 setContentView()
上也是如此。
方法 1: 在 myAccountView.getLayout()
之前调用 myAccountView.onPreDraw();
方法 2: 使用 ViewTreeObserver
ViewTreeObserver vtObserver= myAccountView.getViewTreeObserver();
vtObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Layout layout = myAccountView.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= null
在 setContentView()
上也是如此。
方法 1: 在 myAccountView.getLayout()
myAccountView.onPreDraw();
方法 2: 使用 ViewTreeObserver
ViewTreeObserver vtObserver= myAccountView.getViewTreeObserver();
vtObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Layout layout = myAccountView.getLayout();
}
});