Die benutzerdefinierte Komponente fokusAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Die benutzerdefinierte Komponente fokus

Post by Anonymous »

Ich habe Probleme, eine benutzerdefinierte Komponente sowohl fokussierbar als auch anklickbar zu machen. Mein Ziel ist es, eine benutzerdefinierte Komponente zu erstellen, die beim Klicken automatisch Fokus erhält. Dazu folge ich der offiziellen Google -Dokumentation über FocusRequester. Ich verwende composebom = "2025.05.00" < /code> < /p>
Ich kann jedoch die folgenden Probleme stellen: < /p>
Beispiel 1:
Ich habe verstanden, dass der klickbare Modifikator intern einen fokussierbaren Knoten erstellt. Mein erster Ansatz war: < /p>
@Composable
fun Sample1() {

val focusRequester = remember { FocusRequester() }
val interactionSource = remember { MutableInteractionSource() }
val isFocused = interactionSource.collectIsFocusedAsState().value
val color by remember(isFocused) { mutableStateOf(if (isFocused) Blue else Green) }

Column {
Box(
Modifier
.background(color)
.focusRequester(focusRequester)
.clickable(
interactionSource = interactionSource,
indication = null,
onClick = { focusRequester.requestFocus() }
)
) {
Text("Focusable box")
}
}
}
< /code>
Leider erhält es, wenn ich auf die Komponente klicke, keinen Fokus, obwohl es beim Navigieren mit der Tastatur (Tab -Taste) keinen Fokus erhält. Es wurde jedoch ein neues Problem angezeigt: "Doppelfokus" beim Navigieren mit der Registerkartenschlüssel, was Sinn macht, da sowohl mein Knoten als auch das von Clickable vorhanden sind. < /P>
@Composable
fun Sample2() {

val focusRequester = remember { FocusRequester() }
val interactionSource = remember { MutableInteractionSource() }
val isFocused = interactionSource.collectIsFocusedAsState().value
val color by remember(isFocused) { mutableStateOf(if (isFocused) Blue else Green) }

Column {
Box(
Modifier
.background(color)
.focusRequester(focusRequester)
.focusable(interactionSource = interactionSource)
.clickable(
interactionSource = interactionSource,
indication = null,
onClick = { focusRequester.requestFocus() }
)
) {
Text("Focusable box")
}
}
}
< /code>
Ich bin mir nicht sicher, ob ich dies als Fehler melden sollte oder ob mir etwas in meiner Implementierung fehlt. Kann mir jemand helfen?
Danke im Voraus!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post