Es posible hacer EditText clickable pero no se puede editar.

No quiero que sea editable (Ni debe el teclado llegado ni debemos ser capaces de cambiar la sugerencia)

Realmente quiero usar la Edición de texto simplemente como una imagen con un toque (que no puede ser cambiado). Sé que la forma real fue el uso de un ImageView y uno TextView, pero quiero probar con EditText porque voy a ser entonces el uso de sólo una vista en lugar de 2. También cada cosa es dinámica, por lo que no XML.

Para el requisito anterior la solución en XML es android:editable="false" pero quiero usar esto en Java.

Pero,

Si yo uso :-

et.setEnabled(false);

o

 et.setKeyListener(null);

Hace que el EditText no EDITABLE pero, al mismo tiempo que hace que no se puede hacer clic también.

  • Cómo acerca de la configuración de et.setClickable(true) ? Podría funcionar.
  • ya lo intenté…. pero no funcionó… cualquier otra pensamientos
  • tal vez intentar usar relativa diseño y poner un rectángulo vacío o algo EN la parte SUPERIOR de la edittext, y probar la cosa puede hacer clic en el rect..
InformationsquelleAutor Aamir Shah | 2012-12-30

10 Comentarios

  1. 137

    El truco aquí es :-

    et.setFocusable(false);
    et.setClickable(true);
    • pero si usted ha copiado algunos de valor de cualquier campo que usted puede pegar el valor de escuchar pulsando lang toque y pegar.. alguna idea de cómo eliminar de
    • puede establecer el tiempo puede hacer clic en false, es decir, et.setLongClickable(false);
    • ok voy a probar gracias por su respuesta
    • Hmm, el cursor se resalta de una manera extraña en haga clic en / longclick… Pero no tengo un mejor enfoque. :/
    • Perfecto! usted puede ser que necesite para agregar et.setLongClickable(falso) para evitar el copy/paste
    • Perfecto, Es Usted Médico?

  2. 18

    puede establecer EditText mediante código java como el barbecho :-

    edittext.setFocusable(false);
    edittext.setClickable(true);

    o utilizando a continuación el código en el archivo XML para EditText.

    android:editable="false" 
    android:inputType="none"  
    • editable está en desuso
  3. 7

    Puede utilizar esta..

    android:focusableInTouchMode="false"

    para hacer edittext no editable en xml.Y para hacer clic evento puede utilizar setOnTouchListener() evento para hacer la misma cosa como..

    editText.setOnTouchListener(new OnTouchListener() {
    
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            //TODO Auto-generated method stub
                            //do your stuff here..
            return false;
        }
    });
    • Parece android:focusableInTouchMode="false" también es necesario (android:focusable="false" sola no funciona) en Android O. Al menos, en DP2.
  4. 6

    Como editable está en desuso. usted puede utilizar android:inputType como ninguno en el diseño de xml o como InputType.TYPE_NULL en la codificación.

    El diseño de 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"/>

    De codificación

    edt.setClickable(true);
    edt.setFocusable(false);
    edt.setInputType(InputType.TYPE_NULL);

    Y a continuación es el evento click de edittext

    edt.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(YourActivity.this,"edt click", Toast.LENGTH_LONG).show();
        }
    });
  5. 4

    android:editable está en desuso, pero se puede hacer stg como la siguiente:

    android:editable="false"
    android:focusable="false"
    android:focusableInTouchMode="false"

    He utilizado el cade de arriba para edittexts que puedo usar selectores para conjunto de datos. Usted puede utilizar la entrada de diseño con esto.

  6. 2

    Edittext habilitar y deshabilitar la edición como esta

    EditText edit = (EditText) findviewby(R.id.edittext);

    A través de código java

    edit.setEnabled(false); //non editable
    edit.setEnabled(true); //editable

    A través de xml

    <EditText
        android:id="@+id/otp_mpin"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:editable="false"
        android:focusable="false"/>
  7. 0

    Para mí ninguna de las respuestas resultaron completamente en una solución de trabajo.

    Escaparate de mi revisión https://www.youtube.com/watch?v=oUA4Cuxfdqc

    Guía (noob-friendly), tenga en cuenta el par de comentarios en el código.

    Crear una clase Java para una costumbre EditText llamado EditTextDispatched.java

    import android.content.Context;
    import android.util.AttributeSet;
    import android.view.MotionEvent;
    import android.widget.RelativeLayout;
    
    /**
     * @author Martin Pfeffer
     * @see <a href="https://celox.io">https://celox.io</a>
     */
    public class EditTextDispatched extends android.support.v7.widget.AppCompatEditText {
    
        private static final String TAG = "DispatchingEditText";
    
        private boolean editable = true;
    
        public EditTextDispatched(Context context) {
            super(context);
        }
    
        public EditTextDispatched(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public EditTextDispatched(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    
        //get the current state
        public boolean isEditable() {
            return editable;
        }
    
        //set your desired behaviour
        public void setEditable(boolean editable) {
            this.editable = editable;
        }
    
        @Override
        public boolean dispatchTouchEvent(MotionEvent motionEvent) {
    
            if (editable) {
                //default behaviour of an EditText
                super.dispatchTouchEvent(motionEvent);
                return true;
            }
    
            //achieve the click-behaviour of a TextView (it's cuztom)
            ((RelativeLayout) getParent()).onTouchEvent(motionEvent);
            return true;
        }
    
    }

    De referencia de la EditTextDispatched en el xml (usted tendrá que modificar el pgk-nombre):

      <io.celox.brutus.EditTextDispatched
        android:id="@+id/row_field_value"
        style="@style/row_field_text_display"
        android:layout_alignParentBottom="true"
        android:text="@string/sample_field_value" />

    A invocar:

    private void changeEditTextBehaviour(EditTextDispatched value, boolean editable) {
        value.setEditable(editable);
        value.setEnabled(editable);
    }
  8. 0

    Sé que esta pregunta ya ha sido contestada, pero para darle un más actual (es decir, 2018) respuesta aquí es la configuración que yo uso para lograr la solicitada (es decir, no de entrada o editable) efecto:

        val etUserLoc: EditText = themedEditText(R.style.Pale_Blue_Text_Bold_13) {
                    id = R.id.et_comp_user_keys_var_user_location
                    inputType = InputType.TYPE_NULL
                    isClickable = true
                    isFocusable = false
                    textColor = resources.getColor(R.color.magenta)  //overrides the default theme color
                    text = Editable.Factory.getInstance().newEditable(resources.getString(R.string.loc_swakopmund))
                }.lparams(width = matchConstraint, height = matchParent) {   }

    Sí, este es ANKO ya que yo no uso de XML en cualquiera de mis Proyectos Android. El ‘inputType’ se ocupa de la ‘isEditable’ en desuso.

  9. -1

    también puede hacer android:inputMethod="@null" en su EditText y no se mostrará el cursor o el teclado y, a continuación, se puede agarrar fácilmente el clic a través de la creación de escucha.

Dejar respuesta

Please enter your comment!
Please enter your name here