长按启用EditText(或按钮)

问题描述 投票:3回答:4

在我的应用程序中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时长按不起作用。

android android-edittext android-button
4个回答
0
投票
Try this one.

@Override
public boolean onLongClick(View v) {
    // do some operation
btnname.setenable(true);
btnname.setfocusable(true);
    return false;
}

0
投票

如果有人像我一样偶然发现这个旧帖子,我想我会发布一个答案,因为我找到了一些适合我情况的设置。

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);

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


-1
投票

你有没有试过更换

return false;

通过

return true;

在你的onLongClick(View v)方法?


-1
投票

使用切换按钮,完美套装你的Toggle Button

© www.soinside.com 2019 - 2024. All rights reserved.