什么是过时的StaticLayout的替代品

Mig*_*Slv 5 android android-layout staticlayout

应该用什么代替:

StaticLayout layout = new StaticLayout(text, paint, width, Alignment.ALIGN_NORMAL, mSpacingMult, mSpacingAdd, false);
Run Code Online (Sandbox Code Playgroud)

发出以下警告:

警告:已弃用StaticLayout中的[不推荐使用] StaticLayout(CharSequence,TextPaint,int,Alignment,float,float,boolean)StaticLayout layout = new StaticLayout(文本,paint,宽度,Alignment.ALIGN_NORMAL,mSpacingMult,mSpacingAdd,false);

S.M*_*S.M 10

使用StaticLayout.Builder. 点击此处了解更多详情:https : //developer.android.com/reference/android/text/StaticLayout.Builder

为您的案例使用:

StaticLayout.Builder sb = StaticLayout.Builder.obtain(text, 0, text.length(), paint, width)
                          .setAlignment(Layout.Alignment.ALIGN_NORMAL)
                          .setLineSpacing(mSpacingAdd, mSpacingMult)
                          .setIncludePad (false);
StaticLayout layout = sb.build();
Run Code Online (Sandbox Code Playgroud)

  • 如果需要,您可以使用它:- `// 检查我们是否在 Android 6.0 或更高版本上运行 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { StaticLayout.Builder sb= StaticLayout.Builder.obtain(文本,油漆,宽度).setAlignment(Layout.Alignment.ALIGN_NORMAL).setLineSpacing(mSpacingAdd,mSpacingMult).setIncludePad(假);静态布局布局 = sb.build(); } else { StaticLayout layout = new StaticLayout(text,paint, width, Alignment.ALIGN_NORMAL, mSpacingMult, mSpacingAdd, false); }` (7认同)
  • 不幸的是,StaticLayout.Builder 需要 API 23 或更高版本。我的项目与 API 21 兼容。 (2认同)