首页 > 解决方案 > 科特林。删除文本并将其复制到剪贴板

问题描述

我正在学习 kotlin 并尝试制作一个可以点击文本并将其复制到剪贴板的应用程序

我已经设法敲击文本并将其插入剪贴板,但是当我打开键盘粘贴它时,它看起来像普通文本。当我长按文本字段并点击“粘贴”时,它会按预期粘贴。

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        textInput.addTextChangedListener(object : TextWatcher{
            override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {

            }

            override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {

            }

            override fun afterTextChanged(p0: Editable?) {
                strokedText.text = null
                val a = textInput.text.toString()
                val spannableString1 = SpannableString(a)
                spannableString1.setSpan(StrikethroughSpan(), 0, a.length, 0)
                strokedText.text.replace(0,0, spannableString1)
            }
        })


    }

    fun convert(view: View) {
        super.moveTaskToBack(true)
        val clipboard: ClipboardManager =
            getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager

        val clip = ClipData.newPlainText("label", strokedText.text)

        clipboard.setPrimaryClip(clip)
        textInput.text = null
        //Toast.makeText(this, "All Done! Past your text now!", Toast.LENGTH_SHORT).show()
        Toast.makeText(this, R.string.copyMessage, Toast.LENGTH_SHORT).show()
//        minimizeApp()
        }

任何帮助表示赞赏

标签: androidkotlin

解决方案


最后,我设法通过添加 Unicode 符号“\u0336”找到了解决方案

fun convert(view: View) {
        super.moveTaskToBack(true)
        val clipboard: ClipboardManager =
            getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager

        for (asd in strokedText.editableText.length downTo 0) {
            strokedText.editableText.insert(asd, "\u0336")
        }
        val clip = ClipData.newHtmlText("",strokedText.text,("<del>" + strokedText.editableText+ "</del>"))
        clipboard.setPrimaryClip(clip)
        textInput.text = null
        Toast.makeText(this, R.string.copyMessage, Toast.LENGTH_SHORT).show()
        }

我将 ClipData 制作为 HtmlText,但我很确定 PlainText 也可以。

现在,剪贴板提供了很好的文本而不是原始文本


推荐阅读