Отключение EditText в Android - PullRequest
       84

Отключение EditText в Android

165 голосов
/ 28 ноября 2010

В моем приложении у меня есть EditText, который пользователь имеет только для чтения, но не для записи.

В коде, который я установил android:enabled="false".

Хотя фон EditText изменился на темный, когда я нажимаю на него, клавиатура всплывает и я могу изменить текст.

Что я должен установить, чтобы отключить EdidText?

Спасибо.

Ответы [ 23 ]

4 голосов
/ 28 ноября 2010

Используйте TextView вместо.

2 голосов
/ 11 декабря 2018
android:editable="false"

устарела и используйте

 YourEditText.setInputType(InputType.TYPE_NULL);
1 голос
/ 16 ноября 2018

Это сделает ваш текст редактирования отключенным .

editText.setEnabled(false);

И с помощью этого

editText.setInputType(InputType.TYPE_NULL);

просто заставит ваш Edittext не показывать вашу программную клавиатуру, но если она подключена к физической клавиатуре, она позволит вам печатать.

1 голос
/ 27 июля 2018

Как отмечают некоторые ответы, если вы отключите editText, он станет серым, и если вы установите фокусируемое значение false, курсор будет отображаться.

Если вы хотите сделать это только с xml, это получится

       <YourFloatLabel
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

            <EditText
                android:id="@+id/view_ads_search_select"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:focusable="true"
                android:clickable="true"/>  
       </YourFloatLabel>

Я просто добавляю FrameLayout, появляющийся над editText, и устанавливаю его фокусируемым и кликабельным, чтобы editText нельзя было щелкнуть.

1 голос
/ 13 сентября 2012

Попробуйте это, у меня отлично работает:

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;
} }

Примечание. Вам нужно добавить this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); к своей активности, иначе keyboard будет всплывающим в первый раз.

1 голос
/ 20 мая 2016

В моем случае мне понадобился мой EditText для прокрутки текста, если нет.строк превышает maxLines, если его отключить.Эта реализация отлично сработала для меня.

private void setIsChatEditTextEditable(boolean value)
{
    if(value)
    {
        mEdittext.setCursorVisible(true);
        mEdittext.setSelection(chat_edittext.length());
       // use new EditText(getApplicationContext()).getKeyListener()) if required below
        mEdittext.setKeyListener(new AppCompatEditText(getApplicationContext()).getKeyListener());  
    }
    else
    {
        mEdittext.setCursorVisible(false);
        mEdittext.setKeyListener(null);
    }
}
0 голосов
/ 15 июля 2019

Чтобы отключить функциональность EditText, просто используйте:

EditText.setInputType(InputType.TYPE_NULL);

, если вы хотите каким-либо образом включить его, тогда вы можете использовать:

EditText.setInputType(InputType.TYPE_CLASS_TEXT);
0 голосов
/ 09 февраля 2019

Было несколько способов достижения нескольких уровней отключения.

  • editText.setShowSoftInputOnFocus(false); и editText.setFocusable

предотвращает отображение на клавиатуре EditText - записьв каком-то тексте.Но курсор все еще виден, и пользователь может вставить некоторый текст.

  • editText.setCursorVisible(false)

скрывает курсор.Не уверен, зачем тебе это делать.Пользователь может вводить текст и вставлять.

  • editText.setKeyListener(null)

Я считаю этот способ наиболее удобным.Пользователь никак не может ввести текст, но виджет по-прежнему работает с OnClickListener, если вы хотите инициировать действие, когда пользователь касается его

  • editText.setEnabled(false);

полностьюотключает EditText.Он буквально «только для чтения», пользователь не может вводить в него текст и (например) OnClickListener не не работает с ним.

TextEdit документация

0 голосов
/ 18 августа 2018

Установите это в своем XML-коде. Это работает.

Android: focusableInTouchMode = "ложь"

0 голосов
/ 13 марта 2018

вы можете использовать android:focusable="false", но в противном случае необходимо отключить курсор функция копирования / вставки все еще будет работать.

так, используйте

android:focusable="false"
android:cursorVisible="false"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...