在我的应用程序中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时长按不起作用。
答案 0 :(得分:0)
Try this one.
@Override
public boolean onLongClick(View v) {
// do some operation
btnname.setenable(true);
btnname.setfocusable(true);
return false;
}
答案 1 :(得分:0)
万一有人像我一样偶然发现了这个旧帖子,我以为我会发布答案,因为我发现一些适合我情况的设置。
OP正在寻求一种方法来使EditText函数像被禁用一样,但仍允许设置可以被调用的长按侦听器。
将编辑文本设置为不可聚焦,并将输入类型设置为无。输入类型为none可以使光标单击时不尝试显示它,因此它看起来比只闪烁一秒钟的光标(将focusable设置为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);
希望这会对尝试做类似事情的人有所帮助。
答案 2 :(得分:-1)
您是否尝试过更换
return false;
通过
return true;
在onLongClick(View v)
方法上?
答案 3 :(得分:-1)
使用切换按钮,完美适合您的情况 Toggle Button