在AndroidKotlin中,当EditText为空时,设置文本0和当用户开始在EditText中键入值时,删除0我已经尝试了TextWatcher afterTextChanged并实现了多个条件,但没有一个工作。P.Sandroid:hint=“0”won't help bcz它将显示文本,但不会填充editText,并且此EditText值用于计算,因此当其为空时必须为0
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"
型
kulphzqa2#
用于计算,因此当它为空时必须为0首先,它要么是空的,要么是0。不能两者都是。所以为什么不简单地把0作为默认值,并禁止测试编辑为空?为什么空的/'0'甚至被特殊对待-它只会让你的事情变得复杂,对sx没有任何帮助。正如我在上面的评论中所说,你在问题中所描述的方法(与观察者等)看起来像坏的U/X和我看来,你试图解决的问题,并不真正存在。然后我意识到,如果你想让用户的生活更容易时,输入新的值在该文本编辑(所以她/他不需要首先删除旧值)那么你真正需要的就是选择焦点上的内容,所以任何用户输入自动覆盖旧的内容+这个行为将是明确的用户(s/他会看到选择)提前.所以对我来说,你应该做的就是添加
0
android:selectAllOnFocus="true"
字符串到EditText元素,然后收工
EditText
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) } } }
字符串这个工作完全正常...!
3条答案
按热度按时间unftdfkk1#
你有什么线索吗?我肯定这就是你要找的人。
字符串
也可以用代码来实现
型
kulphzqa2#
用于计算,因此当它为空时必须为0
首先,它要么是空的,要么是
0
。不能两者都是。所以为什么不简单地把0
作为默认值,并禁止测试编辑为空?为什么空的/'0'甚至被特殊对待-它只会让你的事情变得复杂,对sx没有任何帮助。正如我在上面的评论中所说,你在问题中所描述的方法(与观察者等)看起来像坏的U/X和我看来,你试图解决的问题,并不真正存在。然后我意识到,如果你想让用户的生活更容易时,输入新的值在该文本编辑(所以她/他不需要首先删除旧值)那么你真正需要的就是选择焦点上的内容,所以任何用户输入自动覆盖旧的内容+这个行为将是明确的用户(s/他会看到选择)提前.所以对我来说,你应该做的就是添加
字符串
到
EditText
元素,然后收工5tmbdcev3#
字符串
这个工作完全正常...!