我理解这DynamicLayout是针对一个布局,其文本被更改,而StaticLayout处理不可变的文本.
但是,根据他们的文档,这两个类大多采用相同的方法:
http://developer.android.com/reference/android/text/StaticLayout.html http://developer.android.com/reference/android/text/DynamicLayout.html
具体来说,我没有setText()在DynamicLayout课堂上看到一个方法.
它们的区别是什么,我如何使用它DynamicLayout来计算文本变化的布局?
小智 14
为了更新文本更改,DynamicLayout期望Spannable作为第一个参数.在这种情况下,它创建内部静态类DynamicLayout.ChangeWatcher的实例,并将其附加到Spannable.反过来,Spannable需要实现可编辑才能进行更新.
例:
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();
Run Code Online (Sandbox Code Playgroud)