提问人:burhanyaprak 提问时间:4/15/2023 更新时间:4/17/2023 访问量:157
如何将文本复制到带有字体样式的剪贴板?
How to copy text to clipboard styled with 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"
)
}
答:
0赞
Ahmet Kaan
4/17/2023
#1
您可以使用 html 复制样式字符串,但当然您不能复制 html,您只能复制字符串值,所以也许您可以尝试将 html 转换为字符串,然后再次转换。让我举个例子。我有一个粗体文字。让我们称之为
这是我的粗体文字
如果你直接复制这个,你会发现它的原始版本是这样的;
这是我的粗体文字
但是如果你把它变成html,比如;
mySpannedText.html
当你打印它时,它看起来像这样;
<b>This is my bold text</b>
当你把它粘贴到任何地方时,它看起来也是这样的。但是您可以再次将其转换为粗体文本。如果我们假设你在一个名为“sourceString”的变量中定义它,那么你可以把它变成;
Html.fromHtml(sourceString)
在您的代码中,您可以将跨区字符串存储在剪贴板中,并带有这些 html 转换。但是在粘贴部分,您应该编写一些使用“Html.fromHtml()”的代码。我没有那么多关于剪贴板管理器的信息,但我只想通知你这一点。
评论