我在Android Nougat上使用以下代码,并且正在工作: -
Html.fromHtml("<strike> " + myText + "</strike"));
但是在墨西乳油上它不起作用,我的意思是 <strike>
标签。
有什么办法可以在所有设备上使用?
myText
是回复中收到的动态文本:
public void onBindViewHolder(final DealsAdapter.MyViewHolder holder, final int position) {
final DataDeals feedItem = feedItemList.get(position);
用法: -
holder.oldPrice.setText(fromHtml("<strike>" + feedItem.getOldPrice() + "</strike>"));
此方法已弃用。
我应该使用此代码:
@SuppressWarnings("deprecation")
public static Spanned fromHtml(String html){
Spanned result;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
result = Html.fromHtml(html,Html.FROM_HTML_MODE_LEGACY);
} else {
result = Html.fromHtml(html);
}
return result;
}
用法:
fromHtml("<strike> " + myText + "</strike"));
编辑
不要忘记关闭三角形支架:
fromHtml("<strike> " + myText + "</strike>"));
而不是您:fromHtml("<strike> " + myText + "</strike"));
我遇到了同样的问题,即recyclerview项目布局内的文本视图上的strikethroughspan(某些设备)不起作用。它在我的Pixel OS 8.1上正常工作,但在Nexus 6 OS 7.1.1中没有工作。
就我而言,我意识到布局中的某些约束是引起了问题。我改变了实现布局的方式,StrikethroughSpan再次开始工作。请注意带有wrap_content宽度和高度的文本视图,并以相对布局定位。可能会影响文本视图大小的事情可能导致此问题。不幸的是,我没有解决这个问题的根本原因,但我希望这可以帮助其他有类似问题的人。
注意,这两种解决方案都可以为我打击文本工作:
Html.fromHtml("<strike> " + myText + "</strike"));
或
SpannableStringBuilder spanText = new SpannableStringBuilder("my_awesome_text");
spanText.setSpan(new StrikethroughSpan(), 0, textToBeDisplayed.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
myTextView.setText(spanText);
除了Vyacheslav提到的内容外,请检查您的文本视图中是否设置了字体系列。我花了近4个小时调试这个问题,并从文本视图中删除了我的问题解决了我的问题。