Я пытаюсь отобразить TextView с типом «фишек» для каждого слова. Другими словами, я бы хотел, чтобы это Splitwise TokenAutoComplete не редактировалось и не было автозаполнено.TextView с различным стилем для каждого слова
Так что у меня вытяжке для моего стиля:
muscle_token_background.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="@color/primary_dark" />
<corners
android:topLeftRadius="5dp"
android:bottomLeftRadius="5dp"
android:topRightRadius="5dp"
android:bottomRightRadius="5dp" />
</shape>
У меня есть свой стиль, которые используют вытяжке:
themes.xml
<resources>
<style>
.....
</style>
<style name="textview_chips" parent="@android:style/TextAppearance.Medium">
<item name="android:background">@drawable/muscle_token_background</item>
</style>
</resources>
И решение, которое я нашел это использовал SpannableStringBuilder с SyleSpan:
SpannableStringBuilder sb = new SpannableStringBuilder(myString);
int currentCharCount = sb.length();
sb.append(myString.trim());
int nextCharCount = sb.length();
sb.setSpan(new StyleSpan(R.style.textview_chips), currentCharCount, nextCharCount, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
myTextView.setText(sb);
Но TextView только станет наклонным.
Я попытался с другим TextView в файл XML и фоновый Drawable хорошо отображается
<TextView
...
style="@style/textview_chips"
... />
Так как я могу сделать, чтобы применить этот стиль для каждого слова моего TextView?
'StyleSpan' не предназначен для применения ресурсов стиля, как вы определили в своем' styles.xml'. Это для текста полужирным, курсивом, как жирным, так и курсивом, или нормальным. Конструктор ожидает значения, определенные в классе 'Typeface', которые соответствуют жирным/italic/etc состояниям. В зависимости от того, какой фон вы хотите, может быть другой вид диапазона, который будет работать (например, «BackgroundColorSpan»), но вам нужно будет предоставить дополнительную информацию. – Karakuri