gpt4 book ai didi

android - EditTextPreference 禁用按钮?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:55:37 24 4
gpt4 key购买 nike

我想要一个 EditTextPreference,如果 EditText 字段中没有文本,它将禁用 OK 按钮。我创建了一个自定义的 EditTextPreference 类,我能够获取 EditText 对象并设置一个 TextWatcher,但我找不到禁用该按钮的方法。看起来我只是无权访问对话框中的确定和取消按钮。

有人知道如何获得这些按钮或做我想做的事吗?

唯一的选择是尝试从头开始创建一个看起来像并模仿 EditTextPreference 的自定义对话框。

最佳答案

这是一个代码示例,它根据 onCheckValue 函数返回 truefalse 来启用/禁用按钮。

public class ValidatedEditTextPreference extends EditTextPreference
{
public ValidatedEditTextPreference(Context ctx, AttributeSet attrs, int defStyle)
{
super(ctx, attrs, defStyle);
}

public ValidatedEditTextPreference(Context ctx, AttributeSet attrs)
{
super(ctx, attrs);
}

private class EditTextWatcher implements TextWatcher
{
@Override
public void onTextChanged(CharSequence s, int start, int before, int count){}

@Override
public void beforeTextChanged(CharSequence s, int start, int before, int count){}

@Override
public void afterTextChanged(Editable s)
{
onEditTextChanged();
}
}
EditTextWatcher m_watcher = new EditTextWatcher();

/**
* Return true in order to enable positive button or false to disable it.
*/
protected boolean onCheckValue(String value)
{
return Strings.hasValue(value);
}

protected void onEditTextChanged()
{
boolean enable = onCheckValue(getEditText().getText().toString());
Dialog dlg = getDialog();
if(dlg instanceof AlertDialog)
{
AlertDialog alertDlg = (AlertDialog)dlg;
Button btn = alertDlg.getButton(AlertDialog.BUTTON_POSITIVE);
btn.setEnabled(enable);
}
}

@Override
protected void showDialog(Bundle state)
{
super.showDialog(state);

getEditText().removeTextChangedListener(m_watcher);
getEditText().addTextChangedListener(m_watcher);
onEditTextChanged();
}
}

关于android - EditTextPreference 禁用按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4762027/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com