Чем заменить устаревший StaticLayout

Что следует использовать вместо:

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

Дает это предупреждение:

warning: [deprecation] StaticLayout(CharSequence,TextPaint,int,Alignment,float,float,boolean) in StaticLayout has been deprecated StaticLayout layout = new StaticLayout(text, paint, width, Alignment.ALIGN_NORMAL, mSpacingMult, mSpacingAdd, false);

Я настоятельно рекомендую загрузить исходники любого Android API, на который вы нацеливаетесь, которые также будут включать javadocs. Например, используемый вами конструктор имеет следующую документацию javadoc: / ** * @deprecated Вместо этого используйте {@link Builder}. * /

Ovidiu 01.11.2018 17:55
9
1
3 945
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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.

MiguelSlv 01.11.2018 18:45

Вы можете использовать это, если хотите: - // 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); }

S.M 02.11.2018 15:59

Другие вопросы по теме