html.fromhtml();不在某些设备上工作



我在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个小时调试这个问题,并从文本视图中删除了我的问题解决了我的问题。

最新更新