Добавление нового флажка и представления редактируемого текста, когда пользователь нажимает «Готово» на клавиатуре в Android?

#android #dynamic #android-edittext #android-checkbox #on-screen-keyboard

Вопрос:

Я новичок в разработке Android,
чего я пытаюсь достичь, так это,

Когда пользователь нажимает кнопку ГОТОВО с помощью экранной клавиатуры(метод мягкого ввода), существующий текст редактирования по умолчанию должен превратиться в флажок, а также снова создать текст редактирования, чтобы пользователь мог снова ввести некоторые данные.
Я могу сделать это, создав кнопку и нажав на нее, но мне не нужна кнопка, мне нужны взаимодействия с экранной клавиатурой, такие как кнопка ГОТОВО.

во-первых, я попробовал это с помощью OnKeyListener, но он не работает на программной клавиатуре(мобильный телефон), вместо этого он работал на аппаратной клавиатуре, такой как клавиатура ноутбука.

и тогда я также смогу выполнить вышеупомянутую функцию с помощью экранной клавиатуры с помощью onEditerActionListener(), но только один раз я смогу это сделать, и после этого кнопка «ГОТОВО» исчезнет с экранной клавиатуры, кнопка «ВВОД» заменит кнопку «ГОТОВО».

Когда я впервые пытаюсь ввести некоторые данные в текст редактирования, кнопка ГОТОВО доступна, и после того, как кнопка ВВОДА заменит ее.

1) есть ли какой-либо способ остановить замену кнопки «ВВОД» кнопкой «ГОТОВО» на экранной клавиатуре?
2) ИЛИ есть ли какой-либо способ также предоставить функциональные возможности ключу ввода?

XML-КОД,

     <EditText
        android:id="@ id/defaultEditText"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="32dp"
        android:layout_marginTop="32dp"
        android:layout_marginEnd="32dp"
        android:inputType="text"
        android:textSize="20sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        />
 

КОД ДЛЯ ANDROID,

     this.constraintLayout = findViewById(R.id.constraintLayout);
    this.defaultEditText = findViewById(R.id.defaultEditText);

    defaultEditText.setOnEditorActionListener( new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {

        if (actionId == EditorInfo.IME_ACTION_DONE) {

           
            //CREATING A CHECKBOX
            //CREATIN A EDITTEXT
            return true;
        }
        return false;
    }
});
 

выход,

введите описание изображения здесь

введите описание изображения здесь

Ответ №1:

Вы можете использовать maxLines=1 amp; imeOptions="actionDone" , чтобы указать, что вы не хотите переходить enter в новую строку, и вы done . Это всегда даст ожидаемый результат.

Так что ваш EdiText будет выглядеть примерно так:

 <EditText
        android:id="@ id/defaultEditText"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="32dp"
        android:layout_marginTop="32dp"
        android:layout_marginEnd="32dp"
        android:imeOptions="actionDone"
        android:inputType="text"
        android:maxLines="1"
        android:textSize="20sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
 

Комментарии:

1. Но в следующий раз он не предоставляет возможности нажать «Готово».

2. @mockingbird Я попытался протестировать это на нескольких устройствах, и это сработало. Так что не могли бы вы, пожалуйста, предоставить какой-нибудь код для того, что вы говорите «В следующий раз». Как вы это реализуете?