Android 长按时启用编辑文本(或按钮)

Android 长按时启用编辑文本(或按钮),android,android-edittext,android-button,Android,Android Edittext,Android Button,在我的应用程序EditText中,有一个是禁用的,我想在此EditText上实现长按选项(同时禁用模式),启用它并允许从软键输入字符 例如:- 假设最初我允许用户在编辑文本中输入一些数字。经过一些操作后,我需要禁用此EditText。同样,如果用户想要更改之前在editText中输入的号码,则首先需要长按此editText。 长按此editText后,editText将启用,用户将能够再次更改或重新键入号码。在更改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;
}

@凌驾
仅长按公共布尔值(视图v){
//做些手术
返回false;
}

但此代码仅在启用EditText时有效。EditText禁用时长按无效。

是否尝试替换

return false;


在您的
onlong单击(视图v)
方法上

使用切换按钮,它将完全适合您的情况

如果有人像我一样偶然发现这篇老文章,我想我会发布一个答案,因为我发现一些设置适合我的情况

OP正在寻求一种方法,使EditText函数看起来好像被禁用了,但仍然允许设置一个可以被调用的长单击侦听器

将编辑文本设置为不可聚焦,并将输入类型设置为无。输入类型设置为“无”将使光标在单击时不会出现,因此它看起来比仅可聚焦设置为false时闪烁一秒钟的光标要好一点

要在XML中执行此操作,请执行以下操作:

<EditText
    android:id="@+id/txtYourEditTextID"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:focusable="false"
    android:inputType="none" />
要执行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);

希望这能帮助那些试图做类似事情的人。

@Colombet Josselyn。。。是的,我试过了,但没用。@Hardik。。。我知道若按钮被禁用,那个么我什么都做不了。但我是如何完成这项任务的。@VinitVikash试着去碰一下听众看看我对你帖子的评论我认为这应该是可能的,去碰一下听众看看这里你有什么解决办法吗?@Hardik。。。不,我没有找到解决办法。。你在这里提供的链接是按钮的问题。但就我而言,它是编辑文本。如果我将更改editText的背景,使其看起来像禁用,那么此时用户也可以输入文本it@SFN... 我不能用按钮或切换按钮替换EditText…因为在按钮中用户不能输入文本…实际上,在执行长按之前您所说的按钮将启用其rite,或者在btn单击后执行???
EditText txtYourEditText = (EditText)findViewById(R.id.txtYourEditTextID);
txtYourEditText.setFocusable(false);
txtYourEditText.setInputType(InputType.TYPE_NULL);
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);