据我所知,DynamicLayout
适用于文本被更改的布局,而 StaticLayout
处理不可变文本。
然而,根据他们的文档,这两个类大多具有相同的方法:
http://developer.android.com/reference/android/text/StaticLayout.html http://developer.android.com/reference/android/text/DynamicLayout.html
具体来说,我没有在 DynamicLayout
类上看到方法 setText()
。
它们有什么区别,我如何使用 DynamicLayout
来计算文本发生变化的布局?
最佳答案
为了在文本更改时进行更新,DynamicLayout 期望将 Spannable 作为第一个参数。在这种情况下,它会创建内部静态类 DynamicLayout.ChangeWatcher 的实例,并将其附加到 Spannable。反过来,Spannable 需要实现 Editable 才能更新。
例子:
SpannableStringBuilder base = new SpannableStringBuilder("a");
DynamicLayout dynamicLayout = new DynamicLayout(base, base, paint, width, Alignment.ALIGN_NORMAL, 1.0, 0, true);
int firstHeight = dynamicLayout.getHeight();
base.append("\nA");
int secondHeight = dynamicLayout.getHeight();
关于android - StaticLayout 和 DynamicLayout 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26673029/