Включена копия отключенного EditText и объяснение странного поведения android editText

Мой вопрос: Можно ли включить функцию копирования текста из отключенного editText?

Я пробовал следующий код, чтобы проверить поведение на Android 4.4.2 (samsung Galaxy Note II)

EditText _edit;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_fragment_test);

    _edit = (EditText) findViewById(R.id.editDisabled);
    _edit.setText("Text to be copied...");
    _edit.setEnabled(false);

    /* update code with answer below */
    _edit.setInputType(InputType.TYPE_NULL);
    _edit.setTextIsSelectable(true);
    /* end mod */


    Toast.makeText(getApplicationContext(), "onClick enabled: " + (_edit.isClickable() ? true : false) + 
                                        " \n onLongClick enabled: " +  (_edit.isLongClickable() ? true : false) , Toast.LENGTH_LONG).show();


    _edit.setOnLongClickListener(new OnLongClickListener() {
        @Override
        public boolean onLongClick(View paramView) {
            Toast.makeText(getApplicationContext(), "onLongClick()!!!", Toast.LENGTH_LONG).show();
            return false;
        }
    });

    _edit.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View paramView) {
            Toast.makeText(getApplicationContext(), "onclick()!!", Toast.LENGTH_LONG).show();

        }
    });
}

Когда действие открыто, Toast отображает true/true для событий onClick() и onLongClick(). Но если я попытаюсь щелкнуть или нажать longClick на отключенном editText, ни одно событие не будет запущено.

Так кто-нибудь может ответить на мой вопрос или объяснить странное поведение отключенного editText?

заранее спасибо


person shaolin    schedule 18.03.2015    source источник
comment
... это не дубликат ... Я пытаюсь ВКЛЮЧИТЬ функцию копирования из editText, чтобы она не отключалась, как указано в этой теме ... пожалуйста, внимательно прочитайте вопрос, прежде чем отвечать ...   -  person shaolin    schedule 18.03.2015


Ответы (2)


Это не странное поведение. Отключение представления означает запрет взаимодействия с пользователем, независимо от того, является ли представление (длинным) кликабельным.

Вы можете сделать так, как ответил Пол Черненко, чтобы отключить ввод и оставить текст доступным для выбора. Взаимодействие с пользователем также будет возможно (щелчок и длинный щелчок).

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

person kresa    schedule 18.03.2015
comment
спасибо Миллос. Странное поведение возникает из-за теста isClickable(), и тогда я не могу запустить событие onClick... но, возможно, это мое личное мнение. Как вы указали, лучшее, что я могу сделать, это установить собственный стиль для editText, я не Я полагаю, что у меня нет других решений ... так как же стилизовать такой editText, чтобы он отображался как отключенный, поддерживая функцию копирования? - person shaolin; 18.03.2015
comment
вы можете объяснить, что странное поведение, такое как просмотр, кликабельно, но если оно включено. Атрибут enable на один уровень выше кликабельного и имеет приоритет. Рад помочь. - person kresa; 18.03.2015

Попробуйте добавить в xml

 android:inputType="none"
 android:textIsSelectable="true"

И не отключайте EditText

person Paul Chernenko    schedule 18.03.2015
comment
пробовал, но ничего не меняется. Я собираюсь обновить вопрос с этим кодом. Спасибо ! ...Мне нужно отключить editText mate...это моя проблема... - person shaolin; 18.03.2015
comment
@vince46, но также невозможно будет что-то напечатать там, и вы можете создать какой-нибудь слушатель, чтобы предотвратить вставку чего-либо в свой EditText - person Paul Chernenko; 18.03.2015
comment
-Мне нужно, чтобы editText был отключен, потому что я уже поместил некоторый контент до и теперь, после некоторых других событий, я показываю его с кодом - мне нужно показать editText как отключенный для требований стиля и не позволять пользователю изменять содержимое - Пользователь должен скопировать содержимое editText для других целей. - person shaolin; 18.03.2015