【问题标题】:What is the substitute for deprecated StaticLayout什么是已弃用的 StaticLayout 的替代品
【发布时间】:2019-04-05 22:32:34
【问题描述】:

应该用什么来代替:

StaticLayout layout = new StaticLayout(text, paint, width, Alignment.ALIGN_NORMAL, mSpacingMult, mSpacingAdd, false);

给出这个警告:

警告:[弃用] StaticLayout(CharSequence,TextPaint,int,Alignment,float,float,boolean) 在 StaticLayout 已被弃用 StaticLayout layout = new StaticLayout(text, paint, width, Alignment.ALIGN_NORMAL, mSpacingMult, mSpacingAdd, false);

【问题讨论】:

  • 我强烈建议下载您所针对的任何 Android API 的源代码,其中还包括 javadocs。例如,您正在使用的构造函数具有以下 javadoc: /** * @deprecated 请改用 {@link Builder}。 */

标签: android android-layout staticlayout


【解决方案1】:

使用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();

【讨论】:

  • 不幸的是,StaticLayout.Builder 需要 API 23 或更高版本。我的项目与 API 21 兼容。
  • 如果你愿意,你可以使用它:- // Check if we're running on Android 6.0 or higher if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { StaticLayout.Builder sb= StaticLayout.Builder.obtain(text, paint, width) .setAlignment(Layout.Alignment.ALIGN_NORMAL) .setLineSpacing(mSpacingAdd, mSpacingMult) .setIncludePad (false); StaticLayout layout = sb.build(); } else { StaticLayout layout = new StaticLayout(text, paint, width, Alignment.ALIGN_NORMAL, mSpacingMult, mSpacingAdd, false); }
猜你喜欢
  • 2016-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
  • 2021-05-26
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多