Android 如何在textView中设置部分文本;黑体字;(或)";斜体字“;风格
我想在Android 如何在textView中设置部分文本;黑体字;(或)";斜体字“;风格,android,textview,Android,Textview,我想在textView中用粗体(或)斜体字对文本的几个部分进行样式设置。(通过strings.xml)Android textView支持轻量级HTML标记:, 这件事很大胆。 然而这有斜体字! 您可以使用SpanableString以下是一些示例: 创建一个类StringUtil class StringUtil { lateinit var ss: SpannableString fun addForegroundColorSpan(color: Int, start:
textView
中用粗体(或)斜体字对文本的几个部分进行样式设置。(通过strings.xml)Android textView支持轻量级HTML标记:,
这件事很大胆。
然而这有斜体字!
您可以使用SpanableString以下是一些示例:
创建一个类StringUtil
class StringUtil {
lateinit var ss: SpannableString
fun addForegroundColorSpan(color: Int, start: Int, end: Int): StringUtil {
ss.setSpan(ForegroundColorSpan(color), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
return ssu
}
fun addStyleSpan(style: Int, start: Int, end: Int): StringUtil {
ss.setSpan(StyleSpan(style), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
return ssu
}
fun addClickableSpan(cs: ClickableSpan, start: Int, end: Int): StringUtil {
ss.setSpan(cs, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
return ssu
}
fun setMovementMethod(textview: TextView): StringUtil {
textview.setMovementMethod(LinkMovementMethod.getInstance())
return ssu
}
fun getClickableSpan(url: String,context: Context): ClickableSpan {
return object : ClickableSpan() {
override fun onClick(widget: View) {
val uri: Uri = Uri.parse(url)
val intent = Intent(Intent.ACTION_VIEW, uri)
context.startActivity(intent);
}
}
}
fun setSpannableString(textview: TextView) {
textview.text = ss
}
fun getSS(text: String): StringUtil {
ss = SpannableString(text)
return ssu
}
fun setPrefixString(edt: EditText, prefixString: String) {
edt.setText(prefixString)
Selection.setSelection(edt.getText(), edt.getText().length);
edt.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable) {
if(!s.toString().startsWith(prefixString)){
edt.setText(prefixString);
Selection.setSelection(edt.getText(), edt.getText().length);
}
}
override fun beforeTextChanged(
s: CharSequence, start: Int,
count: Int, after: Int
) {
}
override fun onTextChanged(
s: CharSequence, start: Int,
before: Int, count: Int
) {
}
})
}
companion object {
private var ssu: StringUtil = StringUtil()
fun getInstance(): StringUtil {
return ssu
}
}
}
像这样使用它
StringUtil.getInstance().getSS("Here your text. You can set color Span , Style Span, Click Span for the specific part of your string.")
.addStyleSpan(Typeface.BOLD,34,39)
.addClickableSpan(StringUtil.getInstance().getClickableSpan("http://www.google.com",this), 34, 39)
.addForegroundColorSpan(Color.YELLOW, 34, 39)
.addStyleSpan(Typeface.BOLD,43,text.length-1)
.addClickableSpan(StringUtil.getInstance().getClickableSpan("http://www.facebook.com",this), 43, text.length-1)
.addForegroundColorSpan(Color.YELLOW, 43, text.length-1 )
.setMovementMethod(binding.tvWarringPrivacyPolicy)
.setSpannableString(binding.tvWarringPrivacyPolicy)
这回答了你的问题吗?您可以使用Spannable String动态更改文本样式。如果您希望在运行时使用SpannableString进行更改,请看一下这个@NPovlsen,不,这个问题专门询问如何通过java而不是xml进行更改。但我的情况不同,只是让大家知道还有另一种简单的方法。@Velu甚至不?我知道它也是java,但这是一种简单的方法
StringUtil.getInstance().getSS("Here your text. You can set color Span , Style Span, Click Span for the specific part of your string.")
.addStyleSpan(Typeface.BOLD,34,39)
.addClickableSpan(StringUtil.getInstance().getClickableSpan("http://www.google.com",this), 34, 39)
.addForegroundColorSpan(Color.YELLOW, 34, 39)
.addStyleSpan(Typeface.BOLD,43,text.length-1)
.addClickableSpan(StringUtil.getInstance().getClickableSpan("http://www.facebook.com",this), 43, text.length-1)
.addForegroundColorSpan(Color.YELLOW, 43, text.length-1 )
.setMovementMethod(binding.tvWarringPrivacyPolicy)
.setSpannableString(binding.tvWarringPrivacyPolicy)