#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 Я попытался протестировать это на нескольких устройствах, и это сработало. Так что не могли бы вы, пожалуйста, предоставить какой-нибудь код для того, что вы говорите «В следующий раз». Как вы это реализуете?