我想在使用Typeface设置样式后将示例文本的样式形式复制到剪贴板,但复制时它被复制为未设置样式。如何复制样式文本?
binding.buttonStyle.setOnClickListener {
val textStyleSample = TextStyle(
0,
"Sample Text",
CustomFontStyle.rubik_pixels_regular
)
val spannable = SpannableString(textStyleSample.text)
spannable.setSpan(
makeStyleForText(textStyleSample),
0,
textStyleSample.text.length,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
val clipboardManager = requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clipData = ClipData.newPlainText(
"styledText",
spannable.toString()
)
clipboardManager.setPrimaryClip(clipData)
}
data class TextStyle(
val id: Int, var text: String, var customFontStyle: CustomFontStyle
)
enum class CustomFontStyle {
rubik_pixels_regular,
inspiration_regular,
}
private fun makeStyleForText(textStyle: TextStyle): Typeface {
return Typeface.createFromAsset(
requireContext().assets,
"${textStyle.customFontStyle}.ttf"
)
}
1条答案
按热度按时间xzv2uavs1#
你可以用html复制样式化的字符串,当然你不能复制html,你只能复制字符串值,所以也许你可以尝试将html转换为字符串,然后再转换一次。让我给予一个例子。我有一个粗体文本。让我们称之为
这是我的粗体文字
如果你直接复制这个,你会发现它的原始版本一样;
这是我的粗体文字
但如果你把它转成HTML格式;
当你打印它的时候,它看起来就像
当你把它粘贴到任何地方的时候,它看起来也是这样的。但是你可以把它变成粗体文本。如果我们假设你在一个名为“sourceString”的变量中定义它,那么你可以把它变成这样;
在你的代码中,你可以将跨越的字符串存储在剪贴板中,而这些html会旋转。但是在粘贴部分,你应该编写一些使用“Html.fromHtml()”的代码。我没有太多关于剪贴板管理器的信息,但我只是想告诉你这一点。