我有一个外部数据库。我想 BOLD 一些特定的文字。例如,我有一列包含 Word 名称,另一列包含示例。每个单词都有一个例子,在每个例子中,都使用单词。
例如:word 害怕。
例子是:女孩害怕她看到了什么。
我想要获取数据并在recylerview中显示示例中的粗体字。
我使用下面的代码来达到,但不起作用,特定文本不加粗。
String bolder = holder.title.getText().toString();
SpannableStringBuilder stringBuilder = new SpannableStringBuilder(bolder);
stringBuilder.setSpan(new android.text.style.StyleSpan(Typeface.BOLD), 0,
holder.title.getText().toString().length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Log.d("span",holder.title.getText().toString());
holder.example.setText(stringBuilder);
holder.example.setText(wordsList.getExample());
我知道,使用像 这样的html标签,我们可以加粗,但我的数据更多,我想使用Spannable。
答案 0 :(得分:0)
试试这个。
<强> 1。使用setTypeface
holder.example.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
2.使用getPaint
holder.example.getPaint().setFakeBoldText(true);
修改强>
String bolder = holder.title.getText().toString();
SpannableStringBuilder stringBuilder = new SpannableStringBuilder(bolder + wordsList.getExample());
StyleSpan span = new StyleSpan(Typeface.BOLD);
stringBuilder.setSpan(span, 0, bolder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Log.d("span", holder.title.getText().toString());
holder.example.setText(stringBuilder);
答案 1 :(得分:0)
首先,您的代码要加粗文字
holder.example.setText(StringBuilder的);
被下一行替换
holder.example.setText(wordsList.getExample());
因此,请从代码中删除最后一行。
如果您想知道要加粗的单词,那么您需要在从外部数据库获得的文本中找到该单词的位置,因此您需要使用spannable来加粗该单词。
例如:
String wordToBold= "afraid"; // the word that you want to bold out
String textFromDatabase = wordsList.getExample();
SpannableStringBuilder stringBuilder = new SpannableStringBuilder(textFromDatabase);
int startPosition= textFromDatabase.indexOf(wordToBold);
if(startPosition!=-1){
stringBuilder.setSpan(new android.text.style.StyleSpan(Typeface.BOLD), startPosition, startPosition + wordToBold.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
holder.example.setText(stringBuilder);
}
else{
holder.example.setText(wordsList.getExample());
}
希望它会帮助你ツ