Czy ktoś może mi powiedzieć, jak uniemożliwić EditText
edytowanie za pomocą XML? Próbowałem ustawienie android:editable
się false
, ale
- jest przestarzałe; i
- to nie działało.
android
android-edittext
Fran Fitzpatrick
źródło
źródło
EditText
styl i umożliwiają przewijanie, korzystanieUI.setReadOnly(myEditText, true)
z tej biblioteki . Należy ustawić kilka właściwości, które można sprawdzić w kodzie źródłowym .Odpowiedzi:
Użyj tego prostego kodu:
To działa.
Edycja: Aby dodać
KeyListener
później, wykonaj następujące czynności1: ustaw klucz nasłuchiwania na tag
textView
2: pobierz kluczowy detektor z tagu i ustaw go z powrotem na
textView
źródło
setFocusable()
dlatego, że dokument mówi, że domyślna implementacja może zostać zmieniona, jeśli zostanie zmieniona.Dodaj to do pliku xml EditText:
Będzie działać tak samo jak
android:editable="false"
. Pracowałem dla mnie, mam nadzieję, że to też zadziała dla ciebie.źródło
TextInputLayout
Niech Twój Edittext będzie
editText.setKeyListener(null);
będzie działać, ale po prostu nie słucha klawiszy.
Użytkownik może zobaczyć kursor w tekście edycji.
Możesz spróbować
editText.setEnabled(false);
Oznacza to, że użytkownik nie widzi kursora. Po prostu powiedzieć, że się stanie
TextView
.źródło
Jak wspomniano w innych odpowiedziach, możesz to zrobić,
setEnabled(false)
ale ponieważ pytasz, jak ustawić go za pomocą XML, oto jak to zrobić.Dodaj następujący atrybut do
EditText
:źródło
enabled
nie jest przestarzałe.editable
jest.wyłącz z XML (jedna linia):
włącz ponownie z Java, jeśli to konieczne (także jedna linia):
źródło
Sprawili, że „edytowalne” są przestarzałe, ale nie dostarczyły działającego odpowiadającego im w inputType.
Nawiasem mówiąc, czy inputType = "none" ma jakikolwiek wpływ? Korzystanie z niego lub nie nie robi żadnej różnicy, o ile widzę.
Na przykład domyślny editText ma postać pojedynczej linii. Ale musisz wybrać inputType, aby był to pojedynczy wiersz. A jeśli wybierzesz „brak”, nadal będzie wielowierszowy.
źródło
Ta kombinacja działała dla mnie:
źródło
Jak wspomniałeś android: edytowalne jest przestarzałe. android: inputType = "none" należy zamiast tego użyć, ale nie działa z powodu błędu ( https://code.google.com/p/android/issues/detail?id=2854 )
Ale możesz osiągnąć to samo, korzystając z ustawiania ostrości.
Przez XML:
Z kodu:
źródło
jeśli chcesz go kliknąć, ale nie chcesz go edytować, spróbuj:
źródło
Po prostu użyj
android:enabled="false"
. Spowoduje to również pojawienie się tego,EditText
co sprawi, że będzie wyglądać na niemożliwy do edycji.źródło
i użyj następujących:
źródło
Jeśli chcesz to zrobić w kodzie Java, użyj tego wiersza, aby go wyłączyć:
Aby to umożliwić:
źródło
Próbowałem zrobić:
co powinno działać, ale dla mnie nie.
Skończyłem z tym kodem:
co działa idealnie.
źródło
Kiedy chcę, aby aktywność nie skupiała się na tekście edycji, a także nie wyświetlała klawiatury po kliknięciu, to działało dla mnie.
Dodawanie atrybutów do głównego układu
a następnie pole EditText
Oto przykład:
źródło
Oprócz @mahe madi możesz również spróbować tego
Ta metoda ukryje kursor, utraci fokus i, co ważniejsze, ustawi kolor tekstu na czarny zachowując się jak TextView.
Aby cofnąć Powrót do editText, po prostu zrób to, aby uzyskać wszystkie właściwości EditText.
Mam nadzieję, że to pomoże :)
źródło
Możesz użyć,
android:editable="false"
ale naprawdę radzę ci użyć,setEnabled(false)
ponieważ zapewnia wizualną wskazówkę dla użytkownika, że formant nie może być edytowany. Ten sam wizualny sygnał jest używany przez wszystkie wyłączone widżety, a spójność jest dobra.źródło
Atrybut „longClickable” wyłącza akcje długie naciśnięcia, które powodują wyświetlanie opcji „Wklej” i lub „Zaznacz wszystko” jako podpowiedzi.
źródło
Próbowałem następujące:
ale problem polegał na tym, że jeśli tekst edycji jest pierwszy w formularzu, to zostaje on zogniskowany, a kod pickCode (), który uruchamia nowe działanie, jest natychmiast nazywany. Więc zmodyfikowałem kod w następujący sposób i wydaje się, że działa całkiem dobrze (z wyjątkiem tego, że nie mogę ustawić fokusu na edycji tekstu, ale nie muszę):
Z poważaniem,
Komentarze mile widziane,
John Goche
źródło
Używam
EditText.setFocusable(false)
i ustawiam ponownie, jeśli chcę edytować.źródło
Spróbuj tego :
źródło
W ten sposób zrobiłem to za mnie, mogę wybierać i kopiować do schowka, ale nie mogę modyfikować ani wklejać.
źródło
android: edytowalne jest przestarzałe, więc zamiast tego użyj inputType .
źródło
android:editable="false"
Napotkałem ten sam problem, ale po obserwacji stwierdziłem, że działa on tylko wtedy, gdy inputtype (android:inputType="ANY_VALUE"
) nie jest podane w Edittext.Usuń inputType z EditText i użyj editable = false, działa poprawnie.
źródło
Rozwiązuję to za pomocą okna dialogowego.
źródło
Krótka odpowiedź: użyłem
android:focusable="false"
i zadziałało. Słuchanie za pomocą kliknięcia również działa teraz.źródło
Próbować
źródło
Wypróbuj ten kod. Działa w moim projekcie, więc zadziała w twoim projekcie.
źródło