考虑这个简单的例子:
我有这样的单行文本:“你好”
我想用 StaticLayout 测量这个文本。所以我写了这样的东西:
StaticLayout layout = new StaticLayout("Hello", myTextView.getPaint(), myTextView.getWidth(), Layout.Alignment.NORMAL, 1, lineSpace, false);
在上面的代码中,我在 for 循环中更改了 lineSpace 变量,并且每次记录布局的高度:
for(int lineSpace=0; lineSpace<20;lineSpace++){
StaticLayout layout = new StaticLayout("Hello", myTextView.getPaint(), myTextView.getWidth(), Layout.Alignment.NORMAL, 1, lineSpace, false);
Log.d("TAG", "layout height: " + layout.getHeight());
}
当我在具有 android M 布局的设备上运行此代码时,高度不会随着 lineSpace 的多个值而改变。但在较低的 android 版本中,布局的高度分别随行距而变化。
尽管当您的文本超过一行时,StaticLayout 会考虑两行之间的行距。但似乎 Android M 不考虑最后一行的行空间,但较低的 Android 版本会考虑。
我的问题是:在什么版本的 android StaticLayout 考虑最后一行的行空间之后?我可以写这样的东西吗:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// in this version StaticLayout don't consider line space for last line
} else {
// in this version StaticLayout consider line space for last line
}