如何使编辑文本在JAVA中不可编辑但可点击

Aam*_*hah 74 android android-layout android-edittext

是否可以使EditText可点击但不可编辑.

我不希望它是可编辑的(键盘也不应该出现,我们也不能改变提示)

实际上我想将编辑文本简单地用作带有提示的图像(不能更改).我知道实际的方法是使用一个ImageView和一个TextView,但我希望它尝试,EditText因为我将只使用一个视图而不是2.此外,每个东西都是动态的,所以没有XML.

对于上述要求,XML中的解决方案是,android:editable="false"但我想在Java中使用它.

但,

如果我使用: -

et.setEnabled(false);
Run Code Online (Sandbox Code Playgroud)

要么

 et.setKeyListener(null);
Run Code Online (Sandbox Code Playgroud)

它使得EditText不可编辑,但同时也使它不可点击.

Aam*_*hah 145

这里的诀窍是: -

et.setFocusable(false);
et.setClickable(true);
Run Code Online (Sandbox Code Playgroud)

  • @ANinJa你可以将long clickable设置为false,即et.setLongClickable(false); (7认同)
  • 但如果您从任何字段中复制了一些值,您可以通过按下lang tap并粘贴来粘贴该值.任何想法如何删除 (4认同)
  • 完美的!您可能还需要添加 et.setLongClickable(false) 以避免复制/粘贴 (2认同)

小智 18

你可以EditText使用java代码设置为fallowing: -

edittext.setFocusable(false);
edittext.setClickable(true);
Run Code Online (Sandbox Code Playgroud)

或者在XML文件中使用以下代码EditText.

android:editable="false" 
android:inputType="none"  
Run Code Online (Sandbox Code Playgroud)


Nir*_*sar 9

由于editable已被弃用。您可以在设计xml时使用它android:inputType可以在编码中用作InputType.TYPE_NULL

设计XML

<android.support.v7.widget.AppCompatEditText
    android:id="@+id/edt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:focusable="false"
    android:inputType="none"
    android:text="EditText"/>
Run Code Online (Sandbox Code Playgroud)

编码

edt.setClickable(true);
edt.setFocusable(false);
edt.setInputType(InputType.TYPE_NULL);
Run Code Online (Sandbox Code Playgroud)

以下是的点击事件 edittext

edt.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(YourActivity.this,"edt click", Toast.LENGTH_LONG).show();
    }
});
Run Code Online (Sandbox Code Playgroud)


rid*_*doy 7

你可以用这个..

android:focusableInTouchMode="false"
Run Code Online (Sandbox Code Playgroud)

使edittext在xml中不可编辑.对于可点击的事件,您可以使用setOnTouchListener()事件来执行相同的操作.

editText.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
                        //do your stuff here..
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)


sav*_*ion 7

android:editable 已弃用,但您可以执行 stg 如下所示:

android:editable="false"
android:focusable="false"
android:focusableInTouchMode="false"
Run Code Online (Sandbox Code Playgroud)

我将上面的 cade 用于我使用选择器设置数据的编辑文本。您可以使用输入布局。


小智 7

Edittext 启用和禁用这样的编辑

EditText edit = (EditText) findviewby(R.id.edittext);
Run Code Online (Sandbox Code Playgroud)

通过java代码

edit.setEnabled(false); //non editable
edit.setEnabled(true); //editable
Run Code Online (Sandbox Code Playgroud)

通过xml

<EditText
    android:id="@+id/otp_mpin"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:editable="false"
    android:focusable="false"/>
Run Code Online (Sandbox Code Playgroud)