我一直试图将EditText恢复为可编程方式,但它根本无法正常工作。
我查看了多个线程,每个人都在说同样的话,但是由于某种原因,它对我不起作用。
我看着这个,但没有成功
Cannot change EditText back to being editable
谁能找到为什么我的EditText再也无法恢复为可编辑状态的原因?一旦禁用它并尝试重新启用它,该软键将不再显示。这是代码捕捉:
boolean enabled = true;
final Button button = (Button) findViewById(R.id.bnt3);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
enabled = !enabled;
EditText editView = (EditText) findViewById(R.id.popup_dlg_edit_text_id);
if (enabled) {
//BUG: this code never makes my EditText editable again :(
editView.setFocusable(true);
editView.setEnabled(true);
editView.setCursorVisible(true);
editView.setFocusable(true);
editView.setFocusableInTouchMode(true);
editView.setClickable(true);
} else {
editView.setFocusable(false);
editView.setEnabled(false);
editView.setCursorVisible(false);
editView.setKeyListener(null);
editView.setBackgroundColor(Color.TRANSPARENT);
}
}
});
我的布局
<EditText
android:id="@+id/popup_dlg_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@android:color/holo_green_light"
android:hint="@string/app_name"
android:inputType="textNoSuggestions"
android:maxLines="1"
android:textSize="@dimen/default_font_small" />
答案 0 :(得分:0)
要以编程方式禁用/启用更改,您可以使用:
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
enabled = !enabled;
EditText editView = (EditText) findViewById(R.id.popup_dlg_edit_text_id);
if (enabled) {
editView.setInputType(InputType.TYPE_CLASS_TEXT)
} else {
editView.setInputType(InputType.TYPE_NULL)
}
}
});
编辑: 另外,您只需删除两行代码即可正常运行:
//just delete them
editView.setKeyListener(null);
editView.setBackgroundColor(Color.TRANSPARENT);
如果您真的想在禁用EditText时将其设为透明,只需在启用时设置可见性View.INVISIBLE/View.GONE
和View.VISIBLE
。
答案 1 :(得分:0)
首先绑定您的视图,然后听我为butterknife使用的按钮单击。 因此,您可以在一行中这样做
@OnClick(R.id.test_btn)
void onChangeEditTextState() {
editText.setEnabled(!editText.isEnabled());
}
使用setVisibility而非透明背景隐藏视图
editText.setVisibility(editText.isEnabled()? View.VISIBLE:View.INVISIBLE);