android - StaticLayout 和 DynamicLayout 有什么区别

标签 android layout

据我所知,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/

相关文章:

安卓作业调度程序 : JobService with network constraint start even if my device have no network connection.

WPF:为什么我不应该在 ControlTemplate 中使用 {TemplateBinding Margin} - Margin 是否仅适用于元素的容器?

HTML CSS 布局 1 个大图像在左侧,3 个小图像堆叠在右侧(响应式)

android - 仅在 Android 1.5 中扩展基本框架布局时出错

java - 有效获取对象的属性或强制声明类属性

android - 当布局通常为空且仅以编程方式填充时,我可以显示示例 View 吗?

android - 如何在代码中引用 Android 库的 strings.xml 中的字符串?

android - 为什么 Android FireMonkey 应用程序中的控件不能跨越多列或多行?

Android - 覆盖布局强制按钮元素透明

JavaFX BorderPane 将多个按钮设置为底部?