Метод show
Метод show интерфейса контроллера,
который даёт
LocalSoftwareKeyboardController
через current,
запрашивает показ IME.
Обычно клавиатура уже появляется при фокусе,
show нужен, если её скрыли методом
hide
и нужно вернуть без повторного нажатия на поле.
Перед вызовом поле должно быть в фокусе,
например через
requestFocus.
Синтаксис
keyboard?.show()
Пример
Давайте снова покажем клавиатуру по кнопке:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Button
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val keyboard = LocalSoftwareKeyboardController.current
val focusRequester = remember { FocusRequester() }
var text by remember { mutableStateOf("abcde") }
OutlinedTextField(
value = text,
onValueChange = { text = it },
modifier = Modifier.focusRequester(focusRequester),
)
Button(onClick = {
focusRequester.requestFocus()
keyboard?.show()
}) {
Text("12345")
}
}
}
}
На экране кнопка возвращает фокус на поле и поднимает программную клавиатуру.
Смотрите также
-
метод
hide,
который прячет клавиатуру -
класс
LocalSoftwareKeyboardController,
откуда берут current для show -
метод
requestFocus,
который ставит фокус перед show -
функция
OutlinedTextField,
для которого открывают клавиатуру