Как изменить текст TextView на KeyLongPress? - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь выяснить, как изменить текст просмотра текста при нажатии длинной клавиши. Я включил снимок экрана, чтобы, надеюсь, объяснить, что я пытаюсь сделать.

Изображение приложения телефона

таблица цен с зелёным + 10,00. я хочу иметь возможность удерживать каждую цену и иметь всплывающую клавиатуру для редактирования текстового поля. Я новичок в программировании, и мне трудно искать правильную терминологию.

код, который я до сих пор пробовал для этого:

(1..912).forEach {
        val id = resources.getIdentifier("Price$it", "id", packageName)
        val tv = findViewById<TextView>(id)
        when {
            onKeyLongPress(id, setText()) -> tv.text.getText()
            }
        }

Имея 912 цен, я сгруппировал их для ссылки на ID каждого. Вместо того, чтобы пытаться применить любой код по индивидуальным ценам. я знаю, что onKeyLongPress() не правильно использовать. Я так сказал, чтобы помочь мне понять, что я хотел сделать, хотя это не сработало. Чтение справочного материала по нажатию клавиш оставило меня в замешательстве. я не знаю, куда идти отсюда любая информация очень ценится. Спасибо за ваше время.

1 Ответ

0 голосов
/ 08 января 2019

Android имеет специальный вид для редактирования текста: EditText

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

Для действия длинного щелчка вы должны реализовать onLongClickListener:

textView.setOnLongclickListener {
    // [ Let the EditText pop up here ]
    // ....
    true // Return value for the onLongClick function
};

Я рекомендую реализовать onLongclickListener в своем классе адаптера ListView (или RecyclerViewAdapter) в методе getView () или onBindViewHolder (). Здесь - подробный пример этого.

Следующим шагом, который вы хотите сделать, является включение EditText, чтобы пользователи могли что-то печатать. Эта функция должна идти внутри фрагмента кода выше. (Часть «Пусть EditText всплывет здесь»).

Возможны следующие варианты:

  1. Создайте диалоговое окно с предупреждением, содержащим текст редактирования. После того, как пользователь что-то наберет и нажмет «Окей», диалоговое окно будет закрыто, и вы можете просто передать этот пользовательский ввод в TextView, который пользователь первоначально нажал. Для AlertDialog с EditText вы можете найти полезные образцы здесь

  2. Перекрываем EditText поверх TextView и устанавливаем видимость EditText как View.INVISIBLE. Когда пользователь проводит длинный щелчок по TextView, вы можете установить видимость EditText на View.VISIBLE, что сделает EditText видимым для пользователей и разрешит ввод с клавиатуры. Как только пользователь завершит набор текста, он может нажать кнопку «ГОТОВО» на своей клавиатуре или любой ее эквивалент, а затем вы можете снова установить видимость EditText на View.INVISIBLE. Обязательно получите значение EditText и установите его в TextView.

...