Programatik olarak odaklanma isteğinde bulunma

Bazı kullanıcı akışlarında uygulamanızın odağı açıkça belirli bir bileşene taşıması gerekir. Örneğin, bir kullanıcı "Ara" düğmesini tıkladığında odağı otomatik olarak arama giriş alanına yerleştirmek isteyebilirsiniz.

FocusRequester'ı kullanma

Odaklanmayı açıkça istemek için:

  1. FocusRequester örneği oluşturup hatırlayın: val focusRequester = remember { FocusRequester() }.
  2. focusRequester değiştiricisini kullanarak FocusRequester öğesini hedef composable'a ekleyin.
  3. Bir etkinlik geri çağırma işlevi (ör. onClick) veya bir coroutine kapsamı içinde requestFocus() işlevini çağırın.

val focusRequester = remember { FocusRequester() }
var text by remember { mutableStateOf("") }

TextField(
    value = text,
    onValueChange = { text = it },
    modifier = Modifier.focusRequester(focusRequester)
)

val focusRequester = remember { FocusRequester() }
var text by remember { mutableStateOf("") }

TextField(
    value = text,
    onValueChange = { text = it },
    modifier = Modifier.focusRequester(focusRequester)
)

Button(onClick = { focusRequester.requestFocus() }) {
    Text("Request focus on TextField")
}

İlk ekran odağını ayarlama

Bir ekran ilk kez göründüğünde belirli bir bileşene ilk odağı yerleştirmek için LaunchedEffect(Unit) içinde requestFocus() tetikleyin:

LaunchedEffect(Unit) {
    focusRequester.requestFocus()
}

Kapsayıcılar arasında gezinirken veya başka bir ekrandan dönerken, odağı otomatik olarak son odaklanılan alt öğeye döndürmek için focusRestorer() öğesini üst kapsayıcılara da ekleyebilirsiniz. Daha fazla bilgi için Odaklanmayı geri yükleme kılavuzuna bakın.