gpt4 book ai didi

android - 当我知道它正在椭圆化时,StaticLayout getEllipsisCount 返回 0?

转载 作者:行者123 更新时间:2023-11-29 02:14:32 26 4
gpt4 key购买 nike

所以我有一个扩展的 TextView,我试图从中创建一个 StaticLayout,这样我就可以通过调用 getEllipsisCount 来检测文本是否离开屏幕。

所以我在 TextView 中构建静态布局,如下所示:

layout = new StaticLayout(getText(), getPaint(), getWidth(), Alignment.ALIGN_NORMAL, 0f, 0f, false);

但即使 layout.getLineCount() 返回正确的行数,getEllipsisCount(n) 也永远不会返回 > 0,即使我可以清楚地看到它添加了省略号。

所以我猜这已经成为检测文本是否离开屏幕的一种不好的方法...所以有人知道更合适的方法,或者如何让它工作吗?

最佳答案

我也遇到过这个问题,在安卓4.2.2上。我能够通过使用 ViewTreeObserver 绕过它为 onGlobalLayout 事件设置回调并从那里启动延迟的可运行对象的 API:

ViewTreeObserver observer = _someView.getViewTreeObserver();    
observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener()
@Override
public void onGlobalLayout() {
_somView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
_textView.postDelayed(new Runnable() {
public void run() {
// Code that uses ellipsis detection here
}
}, 10);
});

诚然,这有点老套,但这是我可以正确检测到省略号的唯一方法,否则它只会一直报告没有发生省略号。在我的测试中,延迟对于它的工作至关重要,但整个过程执行得足够快,因此可以根据此信息隐藏/显示元素,而不会出现 ui 闪烁。

关于android - 当我知道它正在椭圆化时,StaticLayout getEllipsisCount 返回 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5084647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com