如何将多个字体添加到单个EditText意味着每个单词根据运行时间具有不同的字体

时间:2019-06-22 20:10:38

标签: android fonts android-edittext android-typeface

嗨,我需要为每个单词添加多个字体,然后在edittext中输入,这意味着每个单词都有不同的字体,我用下面的代码完成了一些工作。

SpannableStringBuilder SS = new 
SpannableStringBuilder(enterword.getText().toString());
SS.setSpan (new CustomTypefaceSpan("", font2), 0, size , 
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
enterword.setText(SS);

,但是当您手动分配文本时,此功能有效。 我也附上图片 enter image description here

1 个答案:

答案 0 :(得分:0)

>>> from catalog.models import Pizza >>> from catalog.models import Category >>> pizza = Pizza.objects.all() >>> pizza <QuerySet [<Pizza: name = Chicken, prices = 8, 10, category = catalog.Category.None>, <Pizza: name = Pepperoni, prices = 8, 12, category = catalog.Category.None>, <Pizza: name = Mushroom, prices = 7, 9, category = catalog.Category.None>]> >>> cat = Category.objects.filter(pizza=1) >>> cat <QuerySet [<Category: Classic>]> >>> cat = Category.objects.filter(pizza=2) >>> cat <QuerySet [<Category: Classic>, <Category: Spicy>]> 中进行操作有点棘手,因为它是可编辑的。您可以采用的一种方法是-在您的EditText中添加TextWatcheronTextChangedListener

覆盖EditText中的afterTextChanged并添加诸如以下的自定义逻辑。

TextWatcher

您必须在何时以及如何转换时添加自己的逻辑。当您呼叫String[] words = text.split(); SpannableStringBuilder sb = new SpannableStringBuilder(); for (String word in words) { SpannableString spanned = new SpannableString(word); spanned.setSpan( -- your font span here --); sb.append(spanned); sb.append(" "); } editText.setText(sb); 时,editText.setText将被触发。您需要使用一些标志和afterTextChanged进行回调来处理该递归。

您可能会有这样的事情。

handler

这不是经过优化的,但是应该可以帮助您入门。