StaticLayout和DynamicLayout之间有什么区别

时间:2014-10-31 10:58:17

标签: android layout

我了解DynamicLayout适用于更改文本的布局,而StaticLayout则处理不可变文本。

然而,根据他们的文档,这两个类大多采用相同的方法:

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

具体来说,我在setText()类上没有看到方法DynamicLayout

它们的区别是什么,如何使用DynamicLayout来计算文本发生变化的布局?

1 个答案:

答案 0 :(得分: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();