长按时启用 EditText(或按钮)
Posted
技术标签:
【中文标题】长按时启用 EditText(或按钮)【英文标题】:Enable EditText(or button) on Long pressed 【发布时间】:2014-05-06 11:13:24 【问题描述】:在我的应用程序中 EditText 是禁用的,我想在此编辑文本上实现长按选项(在禁用模式下),启用它并允许从软键输入字符。
例子:-
假设最初我允许用户在 EditText 中输入一些数字。经过一些操作,我需要禁用这个 EditText。同样,如果用户想要更改之前在 editText 中输入的数字,那么首先他需要长按此 editText。 长按此editText后,editText启用,用户将再次能够更改或重新输入数字。我需要在更改editText中的数字之前进行一些操作,并且在操作期间用户没有任何选项可以更改editText中的数字。
代码:-
<EditText
android:id="@+id/eTextBillNoFrmReturn"
android:layout_
android:layout_
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 时长按不起作用。
【问题讨论】:
我认为 OnTouchListner 应该可以看到这里***.com/questions/10853117/… 你有解决办法吗? @Hardik ...不,我没有得到解决方案..您在此处提供的链接是按钮的问题。但就我而言,它是 EditText。如果我将更改 editText 的背景使其看起来像禁用,那么那时用户也可以输入文本。 我想告诉你 Tal Kanel 答案不被接受,只是检查一下 【参考方案1】:Try this one.
@Override
public boolean onLongClick(View v)
// do some operation
btnname.setenable(true);
btnname.setfocusable(true);
return false;
【讨论】:
其实你在执行长按按钮之前所说的会启用它的仪式或者它会在btn点击之后执行???【参考方案2】:如果有人像我一样偶然发现这篇旧帖子,我想我会发布一个答案,因为我找到了一些适合我的情况的设置。
OP 正在寻求一种方法,使 EditText 功能就像它被禁用一样,但仍然允许设置一个可以被调用的长按侦听器。
将编辑文本设置为不可聚焦,并将输入类型设置为无。输入类型为 none 将使其在单击时不会尝试显示光标,因此它看起来比仅将可聚焦设置为 false 时闪烁一秒钟的光标更好。
在 XML 中执行此操作:
<EditText
android:id="@+id/txtYourEditTextID"
android:layout_
android:layout_
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);
希望这会帮助正在尝试做类似事情的人。
【讨论】:
【参考方案3】:你有没有尝试替换
return false;
通过
return true;
在您的onLongClick(View v)
方法上?
【讨论】:
@Colombet Josselyn... 是的,我试过了,但它不起作用。 @Hardik ...我知道如果按钮被禁用,那么我什么也做不了。但是我是如何完成这项任务的。 @VinitVikash 试试 OnTouchListener 看看我对你帖子的评论【参考方案4】:使用最适合您的情况的切换按钮 Toggle Button
【讨论】:
@SFN... 我无法用按钮或切换按钮替换 EditText...因为在按钮中用户无法输入文本...以上是关于长按时启用 EditText(或按钮)的主要内容,如果未能解决你的问题,请参考以下文章
android自定义edittext 当有文字时怎么禁止长按全选事件
如何更改按钮的边框颜色并更改editText中下划线的颜色?