在Android中,要处理富文本(Rich Text)并自定义字体样式,可以使用以下方法:
-
使用HtmlCompat类:
HtmlCompat是一个兼容不同Android版本的类,可以用来解析和创建HTML格式的文本。要使用HtmlCompat处理字体样式,首先需要将HTML字符串转换为Spannable对象,然后应用样式。
示例代码:
import android.os.Build; import androidx.core.text.HtmlCompat; import android.text.Spannable; import android.text.Spanned; import android.text.style.ForegroundColorSpan; import android.text.style.RelativeSizeSpan; import android.text.style.StrikethroughSpan; import android.text.style.StyleSpan; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String html = "
红色 大号 删除线
"; Spannable spannable = HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY); // 应用样式 ForegroundColorSpan redSpan = new ForegroundColorSpan(Color.RED); RelativeSizeSpan bigSpan = new RelativeSizeSpan(2f); StrikethroughSpan strikeSpan = new StrikethroughSpan(); StyleSpan styleSpan = new StyleSpan(Typeface.BOLD); spannable.setSpan(redSpan, 0, 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(bigSpan, 7, 14, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(strikeSpan, 14, 21, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(styleSpan, 21, 28, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 设置富文本到TextView TextView textView = findViewById(R.id.textView); textView.setText(spannable); } } -
使用Html类(针对Android API 24及以上版本):
如果你的应用支持Android API 24及以上版本,可以直接使用Html类处理富文本。但是,请注意,这种方法不支持较旧的Android版本。
示例代码:
import android.os.Build; import android.text.Html; import android.text.Spannable; import android.text.Spanned; import android.text.style.ForegroundColorSpan; import android.text.style.RelativeSizeSpan; import android.text.style.StrikethroughSpan; import android.text.style.StyleSpan; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String html = "
红色 大号 删除线
"; Spannable spannable = Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY); // 应用样式 ForegroundColorSpan redSpan = new ForegroundColorSpan(Color.RED); RelativeSizeSpan bigSpan = new RelativeSizeSpan(2f); StrikethroughSpan strikeSpan = new StrikethroughSpan(); StyleSpan styleSpan = new StyleSpan(Typeface.BOLD); spannable.setSpan(redSpan, 0, 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(bigSpan, 7, 14, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(strikeSpan, 14, 21, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(styleSpan, 21, 28, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 设置富文本到TextView TextView textView = findViewById(R.id.textView); textView.setText(spannable); } }
这两种方法都可以用于处理富文本并自定义字体样式。根据你的应用需求和目标Android版本,可以选择合适的方法。