2012-02-27 17 views
29

Próbuję postawić EditText jak nie można edytować z tym kodem:EditText nie edytowalne

<EditText android:id="@+id/outputResult" 
      android:inputType="text" 
      android:editable="false" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/result" /> 

miałem dodać to, że nie można edytować

android:focusable="false" 

Czy robię coś źle?

Dziękujemy wybitnie dużo

+0

czego tak naprawdę chcesz? –

+0

wiem, dlaczego nie działa tylko z Androidem: editable = "false". Dzięki. – Jjreina

+0

@Zortkun: Dokładnie o to pyta OP. – Squonk

Odpowiedz

88

android:editable="false" powinny działać, ale it is deprecated, należy używać android:inputType="none" zamiast.

Ewentualnie, jeśli chcesz to zrobić w kodzie można to zrobić:

EditText mEdit = (EditText) findViewById(R.id.yourid); 
mEdit.setEnabled(false); 

Jest także alternatywą:

EditText mEdit = (EditText) findViewById(R.id.yourid); 
mEdit.setKeyListener(null); 

Jeśli masz zamiar dokonać EditText nie do edycji, czy mogę zaproponować użycie widżetu TextView zamiast EditText, ponieważ użycie EditText wydaje się w tym przypadku bezsensowne.

EDIT: Altered informacje ponieważ odkryłem, że android:editable jest przestarzała i należy użyć android:inputType="none", ale nie jest to błąd o tym na android kodu; Sprawdź więc this.

+0

Dzięki za alternatywne narzędzie pracy ale Android: editable = "false" no – Jjreina

+2

Korzystanie z textview jest lepsze w tym przypadku –

2
<EditText 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/editTexteventdate" 
      android:background="@null" 
      android:hint="Date of Event" 
      android:textSize="18dp" 
      android:textColor="#fff" 
      android:editable="false" 
      android:focusable="false" 
      android:clickable="false" 

      /> 

Dodaj

androida: edytowalną = "false"

androida: aktywowana = "false"

android: klikalne = "false"

jego praca dla mnie

+0

Ponieważ edytowalny jest przestarzałe, użyj tego: 'android: inputType =" none "(wraz z pozostałymi). – BlueBoy

+0

Nie dlatego, że działa dla Ciebie, powinno działać również dla nas. Opublikowaliś cie to 19 maja tego roku, wię c musisz zdać sobie sprawĘ ..., że dostarczyliś cie nieaktualnĘ ... odpowiedź? No chodź... –

3

W przypadku, gdy chcesz zrób nie EditText edytowalny z kodu:

void disableInput(EditText editText){ 
    editText.setInputType(InputType.TYPE_NULL); 
    editText.setTextIsSelectable(false); 
    editText.setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View v,int keyCode,KeyEvent event) { 
       return true; // Blocks input from hardware keyboards. 
     } 
    }); 
} 

w przypadku chcesz usunąć poziomą linię swojego EditText, wystarczy dodać:

editText.setBackground(null); 

Jeśli chcesz aby umożliwić użytkownikom kopiowanie zawartości EditText, użyj:

editText.setTextIsSelectable(true); 
Powiązane problemy