满足条件时使肯定按钮无效
Invalidate positive button when conditions are met
在我的应用程序中,我有带有 EditText 字段的弹出窗口 window。如果多了一个点我想让肯定按钮失效,意思是让它变灰无法点击。我查看了 Java 代码并尝试了一些解决方案,但我没有弄清楚如何让它工作。
我的代码:
fun dialogBuilder(){
var dots = 0
lateinit var inputText: String
val builder = AlertDialog.Builder(this)
builder.setTitle(getString(R.string.moneyStatus))
val input = EditText(this)
input.inputType = InputType.TYPE_NUMBER_FLAG_DECIMAL or InputType.TYPE_NUMBER_FLAG_SIGNED
input.setKeyListener(DigitsKeyListener.getInstance("0123456789."));
input.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable) {}
override fun beforeTextChanged(s: CharSequence, start: Int,
count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence, start: Int,
before: Int, count: Int) {
val length = s.length
if (length > 0){
for (i in 0..length){
if (i < length) {
if (s[i] == '.') {
dots += 1
}
}
}
}
}
})
builder.setView(input)
builder.setPositiveButton("OK") {
dialog, which -> inputText = input.text.toString()
money.setText(inputText)
}
builder.setNegativeButton(getString(R.string.cancel)) {
dialog, which -> dialog.cancel()
}
if (dots > 1){
//gray out "OK" button
}
builder.show()
}
}
禁用按钮:
mButtonToggle.setEnabled( false );
启用按钮:
mButtonToggle.setEnabled( true );
当我在谷歌上搜索时,我偶然发现了这个问题,应该可以回答你的问题。
How to disable / enable dialog negative positive buttons?
我将代码编译为 kotlin,它似乎可以工作,或者至少可以编译 :D
fun dialogStuff() {
val builder = AlertDialog.Builder(this)
builder.setIcon(android.R.drawable.ic_dialog_info)
builder.setTitle("Alert dialog title")
builder.setMessage("This is the example code snippet to disable button if edittext attached to dialog is empty.")
builder.setPositiveButton("PositiveButton"
) { arg0, arg1 ->
// DO TASK
}
builder.setNegativeButton("NegativeButton"
) { arg0, arg1 ->
// DO TASK
}
val input = EditText(this)
val lp = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT)
input.layoutParams = lp
builder.setView(input)
val dialog = builder.create()
dialog.show()
(dialog as AlertDialog).getButton(AlertDialog.BUTTON_POSITIVE).isEnabled = false
input.addTextChangedListener(object : TextWatcher {
override fun onTextChanged(s: CharSequence, start: Int, before: Int,
count: Int) {
}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int,
after: Int) {
}
override fun afterTextChanged(s: Editable) {
// Check if edittext is empty
dialog.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled = !TextUtils.isEmpty(s)
}
})
}
在我的应用程序中,我有带有 EditText 字段的弹出窗口 window。如果多了一个点我想让肯定按钮失效,意思是让它变灰无法点击。我查看了 Java 代码并尝试了一些解决方案,但我没有弄清楚如何让它工作。 我的代码:
fun dialogBuilder(){
var dots = 0
lateinit var inputText: String
val builder = AlertDialog.Builder(this)
builder.setTitle(getString(R.string.moneyStatus))
val input = EditText(this)
input.inputType = InputType.TYPE_NUMBER_FLAG_DECIMAL or InputType.TYPE_NUMBER_FLAG_SIGNED
input.setKeyListener(DigitsKeyListener.getInstance("0123456789."));
input.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable) {}
override fun beforeTextChanged(s: CharSequence, start: Int,
count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence, start: Int,
before: Int, count: Int) {
val length = s.length
if (length > 0){
for (i in 0..length){
if (i < length) {
if (s[i] == '.') {
dots += 1
}
}
}
}
}
})
builder.setView(input)
builder.setPositiveButton("OK") {
dialog, which -> inputText = input.text.toString()
money.setText(inputText)
}
builder.setNegativeButton(getString(R.string.cancel)) {
dialog, which -> dialog.cancel()
}
if (dots > 1){
//gray out "OK" button
}
builder.show()
}
}
禁用按钮:
mButtonToggle.setEnabled( false );
启用按钮:
mButtonToggle.setEnabled( true );
当我在谷歌上搜索时,我偶然发现了这个问题,应该可以回答你的问题。
How to disable / enable dialog negative positive buttons?
我将代码编译为 kotlin,它似乎可以工作,或者至少可以编译 :D
fun dialogStuff() {
val builder = AlertDialog.Builder(this)
builder.setIcon(android.R.drawable.ic_dialog_info)
builder.setTitle("Alert dialog title")
builder.setMessage("This is the example code snippet to disable button if edittext attached to dialog is empty.")
builder.setPositiveButton("PositiveButton"
) { arg0, arg1 ->
// DO TASK
}
builder.setNegativeButton("NegativeButton"
) { arg0, arg1 ->
// DO TASK
}
val input = EditText(this)
val lp = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT)
input.layoutParams = lp
builder.setView(input)
val dialog = builder.create()
dialog.show()
(dialog as AlertDialog).getButton(AlertDialog.BUTTON_POSITIVE).isEnabled = false
input.addTextChangedListener(object : TextWatcher {
override fun onTextChanged(s: CharSequence, start: Int, before: Int,
count: Int) {
}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int,
after: Int) {
}
override fun afterTextChanged(s: Editable) {
// Check if edittext is empty
dialog.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled = !TextUtils.isEmpty(s)
}
})
}