Jak sprawić, by EditText nie był edytowalny przez XML w Androidzie?
Czy ktoś może mi powiedzieć jak zrobić EditText
nie edytowalną przez XML? Próbowałem ustawić android:editable
na false
, ale
- jest przestarzały; i Nie zadziałało.
24 answers
Użyj tego prostego kodu:
textView.setKeyListener(null);
To działa.
Edit: aby dodać KeyListener
później, wykonaj następujące czynności
1: Ustaw klucz do znacznika textView
textView.setTag(textView.getKeyListener());
textView.setKeyListener(null);
2: pobranie słuchacza klucza z tagu i ustawienie go z powrotem na textView
textView.setKeyListener((KeyListener) textView.getTag());
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-25 12:25:54
Dodaj to do pliku XML EditText:
<EditText ...
android:clickable="false"
android:cursorVisible="false"
android:focusable="false"
android:focusableInTouchMode="false">
</EditText>
Spowoduje to taki sam efekt jak android:editable="false"
. Dla mnie zadziałało, mam nadzieję, że dla ciebie też.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-17 03:17:15
Niech Twój Edittext będzie
EditText editText;
editText.setKeyListener(null);
Będzie działać, ale po prostu nie słucha klawiszy.
Użytkownik widzi kursor w edytowanym tekście.
Możesz spróbować editText.setEnabled(false);
Oznacza to, że użytkownik nie może zobaczyć kursora. Po prostu powiedzieć, że stanie się TextView
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-11 05:35:45
Disable from XML (one line):
android:focusable="false"
Włącz ponownie z Javy, jeśli zajdzie taka potrzeba (również jedna linia):
editText.setFocusableInTouchMode(true);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-06 17:28:00
Jak wspomniano w innych odpowiedziach, możesz zrobić setEnabled(false)
, ale ponieważ pytasz, Jak ustawić go za pomocą XML, oto jak to zrobić.
Dodaj następujący atrybut do twojego EditText
:
android:enabled="false"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-09 15:49:16
Uczynili" editable " przestarzałym, ale nie dostarczyli działającego odpowiadającego w inputType.
Przy okazji, czy inputType= "none" ma jakiś wpływ? Używanie go czy nie, nie robi żadnej różnicy, o ile widzę.
Na przykład domyślny editText mówi się o pojedynczej linii. Ale musisz wybrać inputType, aby była to pojedyncza linia. A jeśli wybierzesz "brak", nadal jest on wielowierszowy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-20 02:14:35
Jak wspomniałeś android: edytowalny jest przestarzały. android: inputType= "none" powinno być używane, 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 za pomocą focusable.
Via XML:
<EditText ...
android:focusable="false"
</EditText>
Z kodu:
((EditText) findViewById(R.id.LoginNameEditText)).setFocusable(false);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-10 14:39:54
Jeśli chcesz go kliknąć, ale nie chcesz go edytować, spróbuj:
android:focusable="false"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-11 20:43:53
Ta kombinacja zadziałała dla mnie:
<EditText ... >
android:longClickable="false"
android:cursorVisible="false"
android:focusableInTouchMode="false"
</EditText>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-12 09:21:42
Jeśli chcesz to zrobić w kodzie Javy po prostu użyj tej linii, aby ją wyłączyć:
editText.setEnabled(false);
I to, aby go włączyć:
editText.setEnabled(true);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-27 20:20:17
Próbowałem zrobić:
textView.setInputType( InputType.TYPE_NULL );
Co powinno zadziałać, ale dla mnie nie.
Skończyłem z tym kodem:
textView.setKeyListener(new NumberKeyListener() {
public int getInputType() {
return InputType.TYPE_NULL;
}
protected char[] getAcceptedChars() {
return new char[] {};
}
});
Który działa idealnie.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-05 10:56:59
<EditText
android:id="@+id/txtDate"
android:layout_width="140dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="10dp"
android:layout_marginTop="2dp"
android:clickable="false"
android:cursorVisible="false"
android:gravity="center" />
I używać:
txtDate.setKeyListener(null);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-26 07:31:00
Po prostu użyj android:enabled="false"
. Spowoduje to również pojawienie się EditText
, które sprawi, że będzie wyglądać na nie edytowalne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-18 06:53:47
Przydałoby ci się android:editable="false"
ale naprawdę bym ci doradził
aby użyć setEnabled(false)
, ponieważ dostarcza użytkownikowi wizualnej wskazówki, że
kontrolka nie może być edytowana. Ten sam sygnał wizualny jest używany przez wszystkich
wyłączone widgety i spójność jest dobra.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-20 15:24:59
Kiedy chcę, aby aktywność nie skupiała się na EditText, a także nie pokazywała klawiatury po kliknięciu, To mi się udało.
Dodawanie atrybutów do głównego układu
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
A następnie pole EditText
android:focusable="false"
android:focusableInTouchMode="false"
Oto przykład:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_home"
android:background="@drawable/bg_landing"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="0dp"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:paddingTop="@dimen/activity_vertical_margin"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
tools:context="com.woppi.woppi.samplelapp.HomeActivity">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/fromEditText"
android:layout_weight="1"
android:hint="@string/placeholder_choose_language"
android:textColor="@android:color/white"
android:textColorHint="@android:color/darker_gray"
android:focusable="false"
android:focusableInTouchMode="false"
android:onClick="onSelectFromLanguage" />
</RelativeLayout>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-17 11:55:47
Próbowałem:
codeEditText.setInputType(InputType.TYPE_NULL);
this.codeEditText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
pickCode();
}
}
});
this.codeEditText.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pickCode();
}
});
Ale problem polegał na tym, że jeśli tekst edycji jest pierwszy w formie to otrzymuje kod focus i pickCode (), który uruchamia nową aktywność nazywa się od razu. Więc zmodyfikowałem kod w następujący sposób i wydaje się do dzialania calkiem dobrze (tyle ze nie moge ustawic ostrosci na edycji tekstu ale Nie muszę):
itemCodeEditText.setFocusable(false);
this.itemCodeEditText.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pickItem();
}
});
Pozdrawiam,
Komentarze mile widziane,
John Goche
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-15 15:47:18
Oprócz @ mahe madi możesz też tego spróbować
editText.setEnabled(false);
editor.setTextColor(Color.BLACK);
Ta metoda ukryje kursor, straci ostrość i co ważniejsze ustawi kolor tekstu na czarny zachowując się jak TextView.
I aby powrócić do editText wystarczy to zrobić, aby uzyskać wszystkie właściwości EditText.
editText.setEnabled(true);
Mam nadzieję, że pomoże:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-30 10:24:56
Używam EditText.setFocusable(false)
i ustawiam true ponownie, jeśli chcę edytować.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-25 03:27:40
Android: edytowalny jest przestarzały, więc zamiast tego użyj inputType.
<EditText
android:id="@+id/editText_x"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="70"
android:inputType="none"
android:hint="@string/enter_x" />
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-11 16:20:44
Spróbuj tego:
android:inputType="none"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-21 01:17:06
W ten sposób wykonałem zadanie za mnie, mogę wybrać i skopiować do schowka, ale nie mogę modyfikować ani wkleić.
android:enable="true"
android:textIsSelectable="true"
android:inputType="none"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-03 21:07:09
Napotkałem ten sam problem, ale po obserwacji odkryłem, że android:editable="false"
działa tylko wtedy, gdy inputtype (android:inputType="ANY_VALUE"
) jest , a nie podane w Edittext.
Usuń inputType z EditText i użyj editable = false, działa dobrze.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-16 09:26:50
Try
.setInputType(InputType.TYPE_NULL);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-26 08:53:36
Spróbuj tego kodu. To działa w moim projekcie, więc będzie działać w Twoim projekcie.
android:editable="false"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-04 16:54:35