Wie entferne ich das zusätzliche Auffüllen in der neuen Symbolleiste mit der Android SDK API Version 21 (der Support-Bibliothek)?
Ich spreche von den roten Pfeilen auf diesem Bild:
Hier ist der Code, den ich verwende:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="?attr/colorPrimary"
android:padding="0dp"
android:layout_margin="0dp">
<RelativeLayout
android:id="@+id/action_bar_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="0dp"
android:padding="0dp"
android:background="#000000">
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
</Toolbar>
Wie Sie sehen können, habe ich alle relevanten Auffüllungen auf 0 gesetzt, aber es gibt immer noch Auffüllungen um den Spinner. Was habe ich falsch gemacht oder was muss ich tun, um die zusätzliche Polsterung loszuwerden?
Bearbeiten Einige haben gefragt, warum ich das versuche.
Gemäß den Material Design-Spezifikationen sollte der Spinner 72 dp von der linken Seite entfernt sein
Ich muss die Polsterung neutralisieren, die Google dort angebracht hat, um meinen Spinner richtig zu platzieren:
Bearbeiten 2
Gemäß der Antwort von Chris Bane unten habe ich contentInsetStart auf 0 gesetzt. Für die Support-Bibliothek müssen Sie den App-Namespace verwenden:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="@dimen/action_bar_height"
android:background="?attr/colorPrimary"
android:contentInsetStart="0dp"
android:contentInsetLeft="0dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</android.support.v4.widget.DrawerLayout>
Ich hoffe das hilft jemandem, es hat mich einige Tage verwirrt.
quelle
contentInsetX
Eigenschaften auf 0dp gesetzt wurden.Antworten:
Der linke Einschub wird durch
contentInsetStart
Symbolleisten verursacht, die standardmäßig 16 dp betragen.Ändern Sie dies in 72dp, um es an der Keyline auszurichten.
Update für die Support-Bibliothek v24.0.0:
Um der Material Design-Spezifikation zu entsprechen, gibt es ein zusätzliches Attribut,
contentInsetStartWithNavigation
das standardmäßig 16 dp beträgt. Ändern Sie dies, wenn Sie auch ein Navigationssymbol haben.quelle
contentInsetStartWithNavigation
auf 0 hat den Trick für mich mit support-v4: 25.0.1Die obige Antwort ist richtig, aber es gibt immer noch eine Sache, die Probleme verursachen könnte (zumindest hat sie ein Problem für mich verursacht).
Ich habe Folgendes verwendet und es funktioniert auf älteren Geräten nicht richtig -
Der Trick ist hier einfach folgendes zu verwenden -
und loswerden -
Und jetzt sollte es auf allen Geräten gut funktionieren.
Ich hoffe es hilft.
quelle
app:contentInsetStartWithNavigation
könnte helfen, Dinge zu beheben, wenn nicht bereits genugSimpley fügt diese beiden Zeilen in die Symbolleiste ein. Dann bekommen wir neue entfernte linke Seite Raum bcoz standardmäßig es 16dp.
quelle
Falls hier jemand anderes stolpert ... können Sie auch die Polsterung einstellen , zum Beispiel:
Oder contentInset :
quelle
Hier ist, was ich getan habe und es funktioniert perfekt auf jeder Version von Android.
toolbar.xml
MyActivity.java (Zum Ausblenden des Standardsymbols in der Symbolleiste)
Ergebnis mit angezeigten Keylines
quelle
Machen Sie Ihre Symbolleiste wie folgt:
Sie müssen hinzufügen
Attribut zum Hinzufügen von Abständen
Bitte folgen Sie diesem Link für mehr - Android-Tipps
quelle
Eine Kombination aus
android:padding="0dp"
In der XML für die Symbolleisteund
mToolbar.setContentInsetsAbsolute(0, 0)
Im CodeDas hat bei mir funktioniert.
quelle
Dies funktioniert für mich auf meinem Android 7.11-Handy:
Hinweis: Ich hatte absolut keinen Erfolg mit padding = 0 oder contentInsetLeft = 0 oder contentInsetStart = 0
quelle
Ok, wenn Sie 72dp benötigen, können Sie dann nicht einfach den Unterschied beim Auffüllen in die XML-Datei einfügen? Auf diese Weise behalten Sie Androids Standard-Inset / Padding bei, die wir verwenden sollen.
Also: 72-16 = 56
Dazu: Fügen Sie 56dp Polster hinzu, um einen Einzug / Rand von insgesamt 72dp zu erzielen.
Oder Sie können einfach die Werte in den Dateien Dimen.xml ändern. das mache ich jetzt Es ändert alles, das gesamte Layout, einschließlich der ToolBar, wenn es auf die neue richtige Android-Art implementiert wird.
Dimen Resource File
Der Link, den ich hinzugefügt habe, zeigt die Dimen-Werte bei 2dp, da ich sie geändert habe, aber standardmäßig auf 16dp eingestellt war. Nur zur Info...
quelle
quelle