spannablestring не работает для программно созданной кнопки

Я знаю, что SpannableString можно установить разный размер текста в одном текстовом представлении, но если текстовое представление добавлено программно, оно не работает.

String s = "Best Ever";
SpannableString ss1 =  new SpannableString(s);
ss1.setSpan(new RelativeSizeSpan(2f), 0, 4, 0); // set size
ss1.setSpan(new ForegroundColorSpan(Color.RED), 0, 4, 0); // set color
TextView tv = (TextView) findViewById(R.id.textview);
tv.setText(ss1); 

person Venky    schedule 24.04.2015    source источник
comment
какая версия апи? 5+?   -  person pskink    schedule 24.04.2015
comment
они изменили его в v5, stackoverflow.com/questions/29007746/   -  person pskink    schedule 24.04.2015


Ответы (1)


Как видите, он работает с Button и TextView для API17, но работает с TextView только с API21.

Интересный! Я заметил, что кнопка в API 21 написана заглавными буквами. Поэтому удалите все заглавные буквы.

По умолчанию кнопки «Материал» настроены так, чтобы текст отображался заглавными буквами. Однако в методе AllCapsTransformationMethod есть ошибка ( детали ошибки ) используется для капитализации, что приводит к отбрасыванию данных Spannable.

Вы можете переопределить стиль кнопки по умолчанию, отключив режим allCaps, который по умолчанию действует для виджетов в стиле Material.

Из кода,

txt.setAllCaps(false);

Из XML,

<View
    ...
    android:textAllCaps="false" />
person King of Masses    schedule 24.04.2015
comment
Спасибо! собирался удариться головой! - person Muhammad Babar; 12.01.2016
comment
пожалуйста, обновите свой ответ, потому что нет атрибута android:allCaps. Я обнаружил, что android:textAllCaps является правильным. - person ישו אוהב אותך; 30.07.2016
comment
@isnotmenow спасибо за инициативу, я обновил свой ответ :) - person King of Masses; 30.07.2016
comment
Я пытаюсь понять это уже день. Я знал, что это будет что-то глупое. В моем случае я пытался уменьшить десятичное число на 50%. Кто бы мог подумать, что в Android можно писать числа с большой буквы! - person Cliff Gunn; 20.10.2016
comment
Каков источник упомянутой ошибки AllCapsTransformationMethod, которая отбрасывает данные Spannable? Есть ли один? - person Mokkun; 28.08.2019
comment
Это известная ошибка с атрибутом textAllCaps, особенно с AllCapsTransformationMethod. code.google.com/p/android/issues/detail?id= 67509 @もっくん - person King of Masses; 28.08.2019