Ich verwende Jetpack Compose, um eine einfache Flash-Karte zu erstellen. Die Idee ist, dass Sie auf die Flash-Karte klicken und sie Ihnen die Antwort geben wird. Allerdings hänge ich an einem grundsätzlichen Problem.
Leider … Ich konnte nicht einmal die offizielle Dokumentation finden, also vertraute mein Lernstil dem Autokorrektursystem …
Wie auch immer, ich glaube, das Problem liegt entweder bei Box() oder Text(). Ich habe ein Align.CenterEnd für die Schwerkraft der Box hinzugefügt. Dies scheint jedoch die einzige Möglichkeit zur Zentrierung in Begriffen für die Box zu sein. Auf der anderen Seite gibt Text() keine Methoden dafür an (es hat Schwerkraft, aber es scheint nichts zu ändern)
Eine Hand in die richtige Richtung wäre erstaunlich.
Nebenbei bemerkt, ich weiß, dass dies kostenlose Antworten geben würde. Aber wie würde ich den Text von $question innerhalb des Klicks ändern. Wie dachte ich, Composables Refresh?…sollte also auf dem Bildschirm regenerieren? vielleicht nicht?
Danke!
val typography = MaterialTheme.typography
val context = ContextAmbient.current
var question = "How many Bananas should go in my Smoothie?"
Column(modifier = Modifier.padding(30.dp).then(Modifier.fillMaxWidth())
.then(Modifier.wrapContentSize(Alignment.Center))
.clickable(onClick = { Toast.makeText(context, "3 Bananas are needed!", Toast.LENGTH_LONG).show()} ) /*question = "3 Bananas required"*/
.clip(shape = RoundedCornerShape(16.dp))) {
Box(modifier = Modifier.preferredSize(350.dp)
.gravity(align = Alignment.CenterHorizontally)
.border(width = 4.dp, color = Gray, shape = RoundedCornerShape(16.dp)),
shape = RoundedCornerShape(2.dp),
backgroundColor = DarkGray,
gravity = Alignment.CenterEnd) {
Text("$question",
style = typography.h4,
)
}
}
Was meinst du mit Text zentrieren? Der Text wird in Ihrer Box zentriert. Wonach suchst du? Ein Rechtfertigungsstil?
– Gabriele Mariotti
3. September 2020 um 8:15 Uhr
Gabriele Marotti
Definieren, wie der Text ausgerichtet werden soll horizontal Ihr könnt euch bewerben textAlign = TextAlign.Center im Text:
Column(modifier = Modifier
.padding(30.dp)
.fillMaxWidth()
.wrapContentSize(Alignment.Center)
.clickable(onClick = { } ) /*question = "3 Bananas required"*/
.clip(shape = RoundedCornerShape(16.dp)),
) {
Box(modifier = Modifier
.preferredSize(350.dp)
.border(width = 4.dp, color = Gray, shape = RoundedCornerShape(16.dp)),
alignment = Alignment.Center
) {
Text(
text = "Question 1 : How many cars are in the garage?",
modifier = Modifier.padding(16.dp),
textAlign = TextAlign.Center,
style = typography.h4,
)
//...
}
}
Über den Text.
Sie können etwas verwenden wie:
var text by remember { mutableStateOf(("How many cars are in the garage?")) }
In Ihrem anklickbaren Element:
.clickable(onClick = { text= "After clicking"} )
in deinem Text:
Text(text,
textAlign = TextAlign.Center,
...)
Es ist nur ein einfaches. Anstelle eines statischen Strings können Sie eine dynamische Struktur verwenden, um den Wert zu speichern und zu aktualisieren.
Danke, das TextAlign war hilfreich. Gibt es für jede Klasse eine offizielle Dokumentation zum Komponieren? Ich war ziemlich verwirrt, als ich es lernte.
– PandaPlaysAll
3. September 2020 um 20:31 Uhr
@PandaPlaysAll Hier findest du alle Dok. Ich habe die Antwort mit dem Link zu aktualisiert TextAlign
– Gabriele Mariotti
3. September 2020 um 20:42 Uhr
Wie können Sie Text unten oder oben ausrichten? Gibt es dafür keine Option in TextAlignment?
– Thrakisch
1. Januar 2021 um 11:16 Uhr
Linh
Sie können verwenden textAlign um Ihren Text horizontal auszurichten und wrapContentHeight um Ihren Text vertikal darin auszurichten Text zusammensetzbar
Beispiel zum Zentrieren von Text (sowohl horizontal als auch vertikal) innerhalb Text
Text(
text = "How many cars are in the garage",
textAlign = TextAlign.Center, // make text center horizontal
modifier = Modifier
.width(150.dp)
.height(150.dp)
.background(Color.Cyan)
.wrapContentHeight() // make text center vertical
)
Beispiel unten mit horizontaler Mitte ausrichten Text
Text(
text = "How many cars are in the garage",
textAlign = TextAlign.Center, // make text center horizontal
modifier = Modifier
.width(150.dp)
.height(150.dp)
.background(Color.Cyan)
.wrapContentHeight(Alignment.Bottom) // align bottom
)
Beispiel unten mit der Mitte horizontal innerhalb von a ausrichten Box
Box(modifier = Modifier
.width(150.dp)
.height(150.dp)
.background(Color.Cyan),
contentAlignment = Alignment.BottomCenter
) {
Text(
text = "How many cars are in the garage",
textAlign = TextAlign.Center
)
}
nicht, wenn Sie zum Beispiel haben minLines = 3 und aktuell Text enthält nur eine Zeile, es ist immer noch nur horizontal zentriert, aber nicht vertikal
Das kompiliert nicht einmal. Bitte korrigieren Sie Ihren Code
– Zun
13. März um 15:46 Uhr
// You can apply textAlign = TextAlign.Center
Text( text = "My name is $name",
color = MaterialTheme.colors.primary,
fontSize = 32.sp,
fontFamily = FontFamily.Cursive,
textAlign = TextAlign.Center,
modifier = Modifier.clickable {
Toast.makeText(context, "Hello Friends"Toast.LENGTH_LONG).show()
})
14485500cookie-checkJetpack Compose – Text zentrierenyes
Was meinst du mit Text zentrieren? Der Text wird in Ihrer Box zentriert. Wonach suchst du? Ein Rechtfertigungsstil?
– Gabriele Mariotti
3. September 2020 um 8:15 Uhr