Programatik olarak odaklanma isteğinde bulunma

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

FocusRequester'ı kullanma

Odağı açıkça istemek için:

  1. Bir FocusRequester örneği oluşturun ve bunu hatırlayın: val focusRequester = remember { FocusRequester() }.
  2. focusRequester değiştiricisini kullanarak FocusRequester öğesini hedef composable'a ekleyin.
  3. requestFocus() işlevini bir etkinlik geri çağırma işlevi (ör. onClick) veya eş yordam kapsamı içinde ç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 ilk odağı belirli bir bileşene yerleştirmek için LaunchedEffect(Unit) içinde requestFocus() öğesini tetikleyin:

LaunchedEffect(Unit) {
    focusRequester.requestFocus()
}

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