在我的应用程序中EditText是禁用的,我想在这个edittext上实现长按选项(当禁用模式时)启用它并允许从软键输入字符。
例:-
假设我最初允许用户在EditText中输入一些数字。经过一些操作后,我需要禁用此EditText。再次,如果用户想要更改先前在editText中输入的数字,那么首先他需要长按此editText。在长按此editText后,editText得到启用,用户将能够再次更改或重新键入该号码。我需要在更改editText中的数字之前执行一些操作,并且在操作期间,用户没有任何选项来更改editText中的数字。
码:-
<EditText
android:id="@+id/eTextBillNoFrmReturn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="2dp"
android:layout_weight="7"
android:clickable="true"
android:background="@drawable/custom_edit_text"
android:inputType="number" />
@Override
public boolean onLongClick(View v) {
// do some operation
return false;
}
但是此代码只能启用EditText。禁用EditText时长按不起作用。
Try this one.
@Override
public boolean onLongClick(View v) {
// do some operation
btnname.setenable(true);
btnname.setfocusable(true);
return false;
}
如果有人像我一样偶然发现这个旧帖子,我想我会发布一个答案,因为我找到了一些适合我情况的设置。
OP正在寻求一种方法来使EditText函数像被禁用一样,但仍然允许设置一个可以被调用的长按一下监听器。
将编辑文本设置为不可聚焦,并将输入类型设置为无。输入类型为none将使光标在单击时不会尝试显示,因此它看起来比闪烁一秒钟的光标更好,只有可聚焦设置为false。
要在XML中执行此操作:
<EditText
android:id="@+id/txtYourEditTextID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:inputType="none" />
要在代码中执行此操作:
EditText txtYourEditText = (EditText)findViewById(R.id.txtYourEditTextID);
txtYourEditText.setFocusable(false);
txtYourEditText.setInputType(InputType.TYPE_NULL);
要做OP想要的,你将实现一个长按一下监听器:
txtYourEditText.setOnLongClickListener(new View.OnLongClickListener {
@Override
public boolean onLongClick(View v) {
((EditText)v).setInputType(InputType.TYPE_CLASS_NUMBER);
v.setFocusable(true);
return true; //or return false if you do not want to consume the event
}
});
然后,无论您想要再次禁用它的操作,请致电
txtYourEditText.setFocusable(false);
txtYourEditText.setInputType(InputType.TYPE_NULL);
希望这会帮助那些尝试做类似事情的人。
你有没有试过更换
return false;
通过
return true;
在你的onLongClick(View v)
方法?
使用切换按钮,完美套装你的Toggle Button