在AndroidKotlin中,当EditText为空时在EditText中设置文本0,当用户开始在EditText中键入值时删除该0

bxgwgixi  于 2023-11-21  发布在  Kotlin
关注(0)|答案(3)|浏览(212)

在AndroidKotlin中,当EditText为空时,设置文本0和当用户开始在EditText中键入值时,删除0
我已经尝试了TextWatcher afterTextChanged并实现了多个条件,但没有一个工作。
P.S
android:hint=“0”won't help bcz它将显示文本,但不会填充editText,并且此EditText值用于计算,因此当其为空时必须为0

unftdfkk

unftdfkk1#

你有什么线索吗?我肯定这就是你要找的人。

<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter your text here"/>

字符串
也可以用代码来实现

val editText = findViewById(R.id.editText) as EditText 
editText.hint = "Enter your text here"

kulphzqa

kulphzqa2#

用于计算,因此当它为空时必须为0
首先,它要么是空的,要么是0。不能两者都是。所以为什么不简单地把0作为默认值,并禁止测试编辑为空?为什么空的/'0'甚至被特殊对待-它只会让你的事情变得复杂,对sx没有任何帮助。
正如我在上面的评论中所说,你在问题中所描述的方法(与观察者等)看起来像坏的U/X和我看来,你试图解决的问题,并不真正存在。然后我意识到,如果你想让用户的生活更容易时,输入新的值在该文本编辑(所以她/他不需要首先删除旧值)那么你真正需要的就是选择焦点上的内容,所以任何用户输入自动覆盖旧的内容+这个行为将是明确的用户(s/他会看到选择)提前.所以对我来说,你应该做的就是添加

android:selectAllOnFocus="true"

字符串
EditText元素,然后收工

5tmbdcev

5tmbdcev3#

val calculationTextWatcher: TextWatcher = object : TextWatcher {
            override fun befor`enter code here`eTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}

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

            override fun afterTextChanged(p0: Editable?) {
                if (holder.binding.tvBagsBuyerAuctionItemAdapter.text.toString().isNullOrBlank()) {
                    holder.binding.tvBagsBuyerAuctionItemAdapter.setText("0")
                    holder.binding.tvBagsBuyerAuctionItemAdapter.setSelection(1)
                }
                if (holder.binding.tvBagsBuyerAuctionItemAdapter.text.toString().length >= 2 && holder.binding.tvBagsBuyerAuctionItemAdapter.text.toString()
                        .startsWith("0")
                ) {
                    val subStr =
                        holder.binding.tvBagsBuyerAuctionItemAdapter.text.toString().substring(1)
                    holder.binding.tvBagsBuyerAuctionItemAdapter.setText(subStr)
                    holder.binding.tvBagsBuyerAuctionItemAdapter.setSelection(1)
                }
                
            }
        }

字符串
这个工作完全正常...!

相关问题