Android: свойство TextView "textAllCaps" вызывает ошибку XML Inflate, если для fontFamily установлено значение sans-serif-конденсированный - PullRequest
0 голосов
/ 05 декабря 2018

Это интересная ошибка, и я смог воспроизвести ее последовательно.Интересно, заметил ли это кто-нибудь еще?Я не смог найти никаких отчетов по нему.

У виджета TextView есть свойство с именем textAllCaps, которое используется для того, чтобы любой отображаемый в нем текст находился во всех заглавных буквах.Это свойство существует в Android начиная с уровня API 14 (Ice Cream Sandwich).Однако недавно я обнаружил, что если вы установите для семейства шрифтов для своего приложения значение sans-serif-сконденсированное, поместив это в styles.xml:

<item name="android:fontFamily">sans-serif-condensed</item>

Затем, когда раздувается любой макет с TextView с textAllCaps=true, то вылетает с InflateException:

12-05 09:18:48.847 16727 16727 E AndroidRuntime: android.view.InflateException: Binary XML file line #49: Binary XML file line #49: Error inflating class TextView
12-05 09:18:48.847 16727 16727 E AndroidRuntime: Caused by: android.view.InflateException: Binary XML file line #49: Error inflating class TextView
12-05 09:18:48.847 16727 16727 E AndroidRuntime: Caused by: java.lang.ArrayIndexOutOfBoundsException: length=57; index=2491

Кто-нибудь сталкивался с этим раньше?

1 Ответ

0 голосов
/ 13 февраля 2019

Я видел это, и установка свойства стиля TextView для стиля темы приложения предотвращает сбои для меня.

Пример:

<style names="MyAppTheme">
   <item name="android:fontFamily">sans-serif</item>
</style>

затем:

<TextView
        style="@style/MyAppTheme"
        ...
        android:textAllCaps="true" />

Редактировать для получения дополнительной информации:

После более подробного изучения я думаю, что ошибка заключается в коде TextView.Первоначальный сбой - это исключение indexOutOfBoundsException, которое в вопросе показывает это:

length=57; index=2491

Я думаю, что список из 57 элементов - это информация о стиле, доступная для TextView, а список элементов 2491+ - это информация о стиле, применяемая кTextView, включая информацию AppTheme.Элемент стиля в позиции 2491, вероятно, требуется для применения свойства textAllCaps.Вероятно, проблема заключается в том, что TextView не осведомлен о дополнительной информации о стиле, если только она не установлена ​​явно, поэтому причина вышеупомянутого исправления обходит проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...