Android 如何更改EditText中制表符的宽度

Android 如何更改EditText中制表符的宽度,android,android-edittext,Android,Android Edittext,EditText似乎只使用一个空格字符来显示制表符。如何强制它改为使用两个空格字符 一个制表符在通常的桌面中显示:例如vim文本编辑器,就好像有两个空格。但从编辑的角度来看,它仍然是一个角色。我的意思是,如果你必须删除它,你仍然必须只删除一个字符,而不是两个。EditText能否以同样的方式工作 我曾试图在布局文件的相应部分中找到类似“tabWidth”的属性,但名称中包含“tab”的属性只有: 可编辑和文本可选 使用TextWatcher textArea.addTextChangedList

EditText似乎只使用一个空格字符来显示制表符。如何强制它改为使用两个空格字符

一个制表符在通常的桌面中显示:例如vim文本编辑器,就好像有两个空格。但从编辑的角度来看,它仍然是一个角色。我的意思是,如果你必须删除它,你仍然必须只删除一个字符,而不是两个。EditText能否以同样的方式工作

我曾试图在布局文件的相应部分中找到类似“tabWidth”的属性,但名称中包含“tab”的属性只有:

可编辑和文本可选

使用TextWatcher

textArea.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) {
             // append whitespace after each character here
             textArea.append(" ")
        }

        override fun afterTextChanged(p0: Editable?) {
        }
    })

ps:这是一个Kotlin代码,但你明白了

文本不应更改。只有制表符应该比现在更宽。它应该有2个字符宽,但这并不意味着我想用2个空格字符替换每个制表符。但是我不知道EditText是否能够做到这一点。对于API 21+有一个android:LetterSpacing你可以添加一个虚拟图像来解释你在寻找什么吗?我已经编辑了这个问题。此外,你可以阅读我对第一个答案的评论。我希望现在应该清楚了。你找到解决办法了吗?我以一个替换周期结束。。。似乎这句话的开头只有TabSpan。@MikeMakarov我想我放弃了寻找解决方案,因为它不是很关键。我的EditText显示了一些代码示例,如果有一些缩进就好了。但我可以接受。在最坏的情况下,您必须预处理文本并用所需的空格数替换所有选项卡。
textArea.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) {
             // append whitespace after each character here
             textArea.append(" ")
        }

        override fun afterTextChanged(p0: Editable?) {
        }
    })