Ich habe ein Problem mit dem Versuch, die Zurück-Schaltfläche auf der Support-Symbolleiste zu zentrieren ... Ich benutze sie in einer ActionBarActivity.
<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:toolbar="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="?attr/colorPrimary"
Android:minHeight="?attr/actionBarSize"
toolbar:popupTheme="@style/ThemeOverlay.AppCompat.Light"
toolbar:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
Und richten Sie die Navigationsnavigation in der onCreate()
der Aktivität wie folgt ein:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle(R.string.title_activity_scanner);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Was ich jedoch bekomme, ist folgendes: Wie Sie sehen, ist die Zurück-Taste falsch platziert
Edit: Das Problem scheint in einem benutzerdefinierten Wert für ?attr/actionBarSize
zu liegen, der auf 40dp eingestellt ist. Es stellt sich jedoch heraus, dass der Titel stattdessen falsch platziert ist.
Aus dem developer.Android.com :
Die Symbolleiste unterstützt ein stärker fokussiertes Feature-Set als ActionBar. Von Anfang an Zum Abschluss kann eine Symbolleiste eine Kombination der folgenden optionalen Optionen enthalten Elemente:
Eine Navigationsschaltfläche. Dies kann ein Aufwärtspfeil sein, ein Umschalten des Navigationsmenüs, schließen, reduzieren, fertig oder eine andere Glyphe nach Wahl der App. Diese Die Schaltfläche sollte immer für den Zugriff auf andere Navigationsziele verwendet werden innerhalb des Containers der Toolbar und ihres gekennzeichneten Inhalts oder Andernfalls belassen Sie den aktuellen Kontext durch die Symbolleiste. Das Die Navigationsschaltfläche ist innerhalb des Minimums der Symbolleiste vertikal ausgerichtet Höhe, falls eingestellt.
Wenn Sie also das Attribut minHeight auf die Höhe der Symbolleiste setzen (layout_height), wird der hintere Pfeil vertikal zentriert.
In ActionBarActivity
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBat().setTitle("Hello World");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
Layoutcode:
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:background="@color/primary"
app:theme="@style/ToolbarTheme"
app:popupTheme="@style/Theme.AppCompat"/>
Und stil:
<style name="AppTheme.Base" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primaryDark</item>
<item name="Android:windowNoTitle">true</item>
<item name="Android:windowActionBar">false</item>
<item name="windowActionBar">false</item>
</style>
<style name="AppTheme" parent="AppTheme.Base">
Denken Sie daran, dass es sich bei der Symbolleiste nur um eine Ansichtsgruppe handelt, so dass Sie sie beliebig gestalten können. Hier ist ein Bildlink: Beispiel der Symbolleiste
Ich hoffe es hilft.
Um dies zu erreichen, entfernen Sie die normale Schaltfläche "Zurück" aus der Symbolleiste und fügen eine benutzerdefinierte Image-Schaltfläche in Ihr XML-Layout ein, und legen Sie ein Bild fest. Sie können diesen ImageButtton an beliebiger Stelle in der Symbolleiste platzieren.
Ihr Aktivitätslayoutcode sollte ungefähr so aussehen.
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<include
Android:id="@+id/toolbar"
layout="@layout/toolbar" />
<ImageButton
Android:layout_width="60dp"
Android:layout_height="60dp"
Android:id="@+id/button"
Android:src="@drawable/attach_icon"
Android:layout_alignParentTop="true"
Android:layout_centerHorizontal="true" />
</RelativeLayout>
Die Antwort von @Rick Sanchez funktioniert, das Layout_height der Toolbar ist genauso wie bei minHeight
Ich habe in Toolbar-Konstruktor gefunden, dass ein Feld die Schaltfläche Schwerkraft einrichten kann, mButtonGravity = a.getInteger(R.styleable.Toolbar_buttonGravity, Gravity.TOP);
, aber die Unterstützung für die v7-Symbolleiste kann nicht eingerichtet werden mButtonGravity = Gravity.TOP;
Piggybacking von @Rick Sanchez answer - Wenn Sie die Größe des minHeight
-Attributs der Toolbar kennen, können Sie Folgendes verwenden:
Android:gravity="top"
app:titleMarginTop="@dimen/margin_to_center"
in der Symbolleiste, um den Text zu zentrieren. Wenn Sie Android:minHeight="?actionBarSize"
verwenden, wäre dies etwa 13p
Für mich funktionierte keine der Lösungen. In meinem Fall war das Problem die Marge, die ich angewendet habe:
<Android.support.v7.widget.Toolbar
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
... >
<View
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginBottom="10dp"
Android:layout_marginTop="10dp" />
</Android.support.v7.widget.Toolbar>
Nach dem direkten Anwenden auf die Symbolleiste wurde die Schaltfläche vertikal zentriert:
<Android.support.v7.widget.Toolbar
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginBottom="10dp"
Android:layout_marginTop="10dp"
... >
<View
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</Android.support.v7.widget.Toolbar>
stellen Sie die Schaltflächengröße 56dp
ein und setzen Sie scaleType
auf center
ohne Ränder auf Appbar
Stellen Sie sicher, dass Ihr Symbol 24x24
-Abmessungen ist