【问题标题】:put # before the word written edit text把#写在写的编辑文本之前
【发布时间】:2020-07-28 18:33:24
【问题描述】:

如何在edittext中将#字符放在单词之前?

我想要什么:我想在编辑文本中写的每个单词之前加上#字符

每个单词都以#开头

例如:

#hello #world #hi


【问题讨论】:

  • TextWatcheraddTextChangedListener
  • 请提供示例代码!。我需要帮助
  • 请看我对这个问题的回答:stackoverflow.com/questions/61094990/…
  • 这不是一个简单的例子。您还可以搜索使用 EditText 掩码的库。

标签: android android-edittext textwatcher


【解决方案1】:

试试这个TextWatcher

class SharpWordsTextWatcher: TextWatcher {

    private var addSharp: Boolean = false
    private var isEmpty = false

    override fun afterTextChanged(s: Editable) {
        if(addSharp) {
            s.insert(s.length - 1, "#")
        }
    }

    override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {
        isEmpty = s.isEmpty() || s.last() == ' '
    }

    override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
        addSharp = isEmpty && s.last() != ' ' && count != 0
    }

}

并将其添加到您的EditText

myEditText.addTextChangedListener(SharpWordsTextWatcher())

【讨论】:

  • @tsniso 我没有太多时间来测试它,所以也许你需要做一些改进和一些修复。但这是您继续使用此解决方案的好方法。谢谢。
  • 谢谢 :) 还有一个问题 =) 我可以限制一下吗?例如让 4 # 让
  • 所以只有前 4 个单词带有 #?
  • 你需要有计数器,所以当你发财的时候不要附加更多的#-s。在删除文本时,您还需要减少该计数器。如果我有更多时间,我将编辑答案以包含此内容
  • 你可以帮我吗?
猜你喜欢
  • 1970-01-01
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-15
  • 2012-12-13
相关资源
最近更新 更多