Jetpack Compose – Text zentrieren

Lesezeit: 4 Minuten

Benutzeravatar von PandaPlaysAll
PandaPlaysAll

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,
                )
            }
        }

Bild des aktuellen Inhalts

  • 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

Benutzeravatar von Gabriele Mariotti
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,
        )
      //... 
   }
}
  

Geben Sie hier die Bildbeschreibung ein

Ü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

Benutzeravatar von Linh
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

    – Benutzer924

    14. März um 21:51 Uhr


Benutzeravatar von Abhinav Chauhan
Abhinav Chauhan

Box(contentAlignment = Alignment.Center, modifier = Modifier.fillMaxHeight()) 
{
    Text(text = "Text"),
    textAlign = TextAlign.Center,
}

  • 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()
        })

1448550cookie-checkJetpack Compose – Text zentrieren

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy