422 Stimmen

Android-Symbolleiste Titel und benutzerdefinierter Schriftart zentrieren

Ich versuche herauszufinden, wie man eine benutzerdefinierte Schriftart für den Symbolleistentitel verwendet und diesen in der Symbolleiste zentriert (Kundenanforderung).

Im Moment verwende ich die gute alte ActionBar und setze den Titel auf einen leeren Wert. Dann verwende ich setCustomView, um meine benutzerdefinierte Schriftart in einem TextView zu platzieren und sie mit ActionBar.LayoutParams zu zentrieren.

Gibt es einen besseren Weg, das zu tun? Verwendung der neuen Toolbar als meine ActionBar.

0voto

Sỹ Phạm Punkte 531

Versuchen

@Override
    public void onBackPressed() {
          if(getTitle().equals(getResources().getString(R.string.app_name))) {
            super.onBackPressed();}
          else {
//Sichtbarkeit setzen
           }
}

0voto

Uzair Mughal Punkte 309

Ich weiß nicht, ob irgendjemand dieses Problem hat, aber die Verwendung eines zusätzlichen Textfelds ist schlecht, weil Sie den Titel selbst verwalten müssen und die Verwendung von Reflektion ist am schlechtesten, weil sich die IDs ändern, während Proguard-Regeln hinzugefügt werden.

app:titleCentered

0voto

Wenden Sie einfach dieses Thema an:

    <item name="android:gravity">center_vertical</item>
    <item name="navigationIconTint">@color/white</item>
    <item name="tint">@color/white</item>
    <item name="iconTint">@color/white</item>

-1voto

Saqib00786 Punkte 39
  @Composable
    fun topAppBar() {
        CenterAlignedTopAppBar(
            title = {
                Text(
                    "Obere App-Leiste"
                )
            },
            navigationIcon = {
                IconButton(onClick = { /*TODO*/ }) {
                    Icon(
                        imageVector = Icons.Default.ArrowBack,
                        contentDescription = "Zurück"
                    )
                }
            },
            actions = {
                IconButton(onClick = { /*TODO*/ }) {
                    Icon(
                        imageVector = Icons.Default.MoreVert,
                        contentDescription = "Mehr",
                    )
                }
            },
            colors = TopAppBarDefaults.smallTopAppBarColors(
                containerColor = MaterialTheme.colorScheme.secondaryContainer
            )
        )
    }
}

-4voto

Diya Bhat Punkte 205

Sie müssen nur die folgende Zeile in Ihr Toolbar-Layout hinzufügen:

app:contentInsetStart="0dp"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X