233 Stimmen

Deaktivieren des EditText in Android

In meiner Anwendung habe ich ein EditText, auf das der Benutzer nur Lesezugriff und keinen Schreibzugriff hat.

Im Code setze ich android:enabled="false".

Obwohl sich der Hintergrund des EditText dunkel verändert hat, erscheint beim Klicken die Tastatur und ich kann den Text ändern.

Was sollte ich einstellen, um das EditText zu deaktivieren?

4voto

Die Verwendung von android:editable="false" ist veraltet. Stattdessen müssen Sie android:focusable="false" verwenden.

3voto

cx0der Punkte 432

Verwenden Sie stattdessen TextView.

1voto

Vodet Punkte 1386

Wie einige Antworten erwähnen, wird er, wenn Sie den editText deaktivieren, grau und wenn Sie focusable false setzen, wird der Cursor angezeigt.

Wenn Sie dies nur mit XML tun möchten, hat dies funktioniert

Ich habe einfach ein FrameLayout über dem editText hinzugefügt und es focusable und klickbar gemacht, damit der editText nicht angeklickt werden kann.

1voto

Rishabh876 Punkte 2674

In meinem Fall musste mein EditText Text scrollen, wenn die Anzahl der Zeilen maxLines überschreitet, wenn es deaktiviert ist. Diese Implementierung hat bei mir perfekt funktioniert.

private void setIsChatEditTextEditable(boolean value)
{
    if(value)
    {
        mEdittext.setCursorVisible(true);
        mEdittext.setSelection(chat_edittext.length());
       // verwenden Sie new EditText(getApplicationContext()).getKeyListener()) nach Bedarf unten
        mEdittext.setKeyListener(new AppCompatEditText(getApplicationContext()).getKeyListener());  
    }
    else
    {
        mEdittext.setCursorVisible(false);
        mEdittext.setKeyListener(null);
    }
}

1voto

Favas Kv Punkte 2641

Versuchen Sie es mit diesem, funktioniert gut für mich:

public class CustomEdittext extends EditText {

Boolean mIsTextEditor=true;
public CustomEdittext(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
}

@Override
public boolean onCheckIsTextEditor() {
    // TODO Auto-generated method stub
    return mIsTextEditor;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    // TODO Auto-generated method stub
    mIsTextEditor=false;
    Boolean mOnTouchEvent=super.onTouchEvent(event);
    mIsTextEditor=true;     
    return mOnTouchEvent;
} }

Hinweis: Sie müssen this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); zu Ihrer Aktivität hinzufügen, sonst wird die Tastatur beim ersten Mal angezeigt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X