我知道DynamicLayout
是用于其文本已更改的Layout的,而StaticLayout
处理不可变的文本。
但是,根据他们的文档,这两个类大多数具有相同的方法:
http://developer.android.com/reference/android/text/StaticLayout.html
http://developer.android.com/reference/android/text/DynamicLayout.html
具体来说,我在setText()
类上看不到DynamicLayout
方法。
它们之间有什么区别,我如何使用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();