2014-10-31 1543 views
8

我知道DynamicLayout适用于其文本被更改的版式,而StaticLayout则处理不可变的文本。StaticLayout和DynamicLayout之间有什么区别

然而,这两个类大多有相同的方法,根据自己的文档:

http://developer.android.com/reference/android/text/StaticLayout.html http://developer.android.com/reference/android/text/DynamicLayout.html

具体而言,我没有看到一个方法setText()DynamicLayout类。

它们的区别是什么?如何使用DynamicLayout计算文本不断变化的布局?

回答

11

为了更新文本更改,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(); 
相关问题