Ich verwende eine benutzerdefinierte Aktionsleistenansicht. Wie Sie im folgenden Screenshot sehen können, befindet sich in der Aktionsleiste ein leerer grauer Bereich. Ich möchte es entfernen.
Was habe ich gemacht:
res / values-v11 / styles.xml
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
<item name="actionBarStyle">@style/ActionBarStyle</item>
</style>
res / values / my_custom_actionbar.xml
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="ActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
<item name="android:height">60dp</item>
</style>
</resources>
Manifest
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="19" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/AppName"
android:theme="@style/AppBaseTheme" >
<!-- activities... etc -->
</application>
Hauptaktivität
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
ActionBar actionbar = getSupportActionBar();
actionbar.setDefaultDisplayHomeAsUpEnabled(false);
actionbar.setDisplayHomeAsUpEnabled(false);
actionbar.setDisplayShowCustomEnabled(true);
actionbar.setDisplayShowHomeEnabled(false);
actionbar.setDisplayShowTitleEnabled(false);
actionbar.setDisplayUseLogoEnabled(false);
actionbar.setHomeButtonEnabled(false);
// Add the custom layout
View view = LayoutInflater.from(this).inflate(R.layout.actionbar, null, false);
actionbar.setCustomView(view);
}
Ich habe kürzlich einen Beitrag gefunden, der darauf hinweist, dass es ein Problem mit der neuesten Version gibt. Ich habe auch ADT und SDK auf Android 5 aktualisiert.
Die benutzerdefinierte Ansicht von Android ActionBar füllt das übergeordnete Element nicht aus
Ich weiß nicht, was ich tun soll.
Bearbeiten (Teillösung):
Funktioniert nicht mit Android <= API 10.
Was habe ich geändert:
Verwenden Sie die neueste SDK-Version:
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="21" />
Fügen Sie hinzu toolbarStyle
:
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
<item name="actionBarStyle">@style/ActionBarStyle</item>
<item name="android:toolbarStyle">@style/ToolbarStyle</item>
<item name="toolbarStyle">@style/ToolbarStyle</item>
</style>
<style name="ToolbarStyle" parent="@style/Widget.AppCompat.Toolbar">
<item name="contentInsetStart">0dp</item>
<item name="android:contentInsetStart">0dp</item>
</style>
quelle
Antworten:
Wenn Sie das
Toolbar
via XML hinzufügen , können Sie einfach XML-Attribute hinzufügen, um Inhaltseinfügungen zu entfernen.quelle
android.support.v7.widget.Toolbar
: hinzuzufügenapp:contentInsetStartWithNavigation="0dp"
.Versuche dies:
Ich habe diesen Code in meinem Projekt verwendet, viel Glück;
quelle
actionBar.setCustomView(R.layout.app_title_bar);
Toolbar parent =(Toolbar) actionBar.getCustomView().getParent();
parent.setContentInsetsAbsolute(0,0);
das Layout auch nicht aufblasen.parent.setPadding(0, 0, 0, 0);
für Tabletten hinzufügenDer linke Einschub wird durch
contentInsetStart
Symbolleisten verursacht, die standardmäßig 16 dp betragen.Ändern Sie dies, 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.Es stellte sich heraus, dass dies Teil einer neuen Materialdesignspezifikation ist, die in Version 24 der Designbibliothek eingeführt wurde.
https://material.google.com/patterns/navigation.html
Es ist jedoch möglich, den zusätzlichen Speicherplatz zu entfernen, indem Sie dem Symbolleisten-Widget die folgende Eigenschaft hinzufügen.
Vor :
Nach dem :
quelle
Ich habe eine andere Auflösung (Referenz appcompat-v7) gefunden, die den toolbarStyle wie folgt ändert:
quelle
Das sollte gut genug sein.
quelle
Ändern Sie einfach Ihre styles.xml
quelle
Anstatt dem Layout eine Symbolleiste hinzuzufügen, können Sie Ihre benutzerdefinierte Ansicht wie unten gezeigt festlegen.
quelle
Nur
app:contentInsetStart="0dp"
zur Symbolleiste hinzufügen , entfernen Sie den verbleibenden Platz.Ihre Symbolleistendefinition sieht also so aus
und es sieht so aus
quelle
Mit können
AppCompatAcitivty
Sie nur von verwendenquelle
Sie müssen diese Zeile app2: contentInsetStart = "0dp" in Ihre Symbolleiste einfügen
quelle
app:contentInsetStart="0dp"
Ich habe nirgendwo eine Lösung für mein Problem gefunden (erstes Bild), aber nach ein paar Stunden Graben habe ich endlich die einfachste Lösung gefunden. Bitte beachten Sie, dass ich es mit vielen XML-Attributen wie versucht habe
app:setInsetLeft="0dp"
usw. , aber keines davon hat in diesem Fall geholfen.Bild 1
Der folgende Code löste dieses Problem wie in Abbildung 2
Bild 2
quelle
Das Setzen der Attribute "contentInset ..." auf 0 in der Symbolleiste hat bei mir nicht funktioniert. Nilesh Sentas Lösung zur Aktualisierung des Stils hat funktioniert!
styles.xml
Java (onCreate)
quelle
Erstellen Sie eine Symbolleiste wie folgt:
Bitte folgen Sie diesem Link für mehr - Android-Tipps
quelle
nur
android:padding="0dp"
Arbeit für mich hinzufügenquelle
quelle
Sie können einfach das relative Layout innerhalb der Ansichtsgruppe der Symbolleiste in Ihrer XML-Datei verwenden und die Positionen der Widgets nach Bedarf für Ihren Anwendungsfall anpassen. Sie müssen kein benutzerdefiniertes Layout erstellen und es aufblasen und an die Symbolleiste anhängen. Sobald Sie in Ihrem Java-Code fertig sind, verwenden Sie setContentInsetsAbsolute (0,0) mit Ihrem Symbolleistenobjekt, bevor Sie es als Unterstützungsaktionsleiste in Ihrem Layout festlegen.
quelle
Es ist besser, ein Hintergrundelement in den Stil der App-Aktionsleiste einzufügen, das mit der Hintergrundfarbe der benutzerdefinierten Aktionsleiste übereinstimmt:
Nach Android 6.0 hat die Aktionsleiste sogar einen Rand rechts und kann nicht festgelegt werden. Fügen Sie einen rechten Rand hinzu, der die Aktivität wie folgt anpasst: (Die Ansicht ist die benutzerdefinierte Aktionsleiste oder eine rechte Schaltfläche darin.)
Die Actionbar machenism wird erst nach der Android 3.0+ App unterstützt. Wenn wir stattdessen eine Symbolleiste (von support lib v7) verwenden, sollten wir sie in jeder XML-Datei jeder Aktivität anordnen und das Problem der Überlappung mit der Systemstatusleiste in Android 5.0 oder höher beheben.
quelle
Kotlin
quelle
diese Arbeit für mich
quelle
Wenn Sie die Dokumentation der Symbolleiste überprüfen, ist standardmäßig der Stil definiert und es gibt ein Element contentInsetStart.
Wenn Sie diese Auffüllung überschreiben möchten, können Sie dies auf zwei Arten tun.
1. Überschreiben Sie den Stil und fügen Sie Ihren eigenen Stil mit den Werten contentInsetStart und contentInsetEnd hinzu
2. In XML können Sie die Werte contentInsetStart und contentInsetEnd direkt definieren
quelle
Unterstützt Ihre App Android 5? Wenn dies nicht der Fall ist, können Sie die Version der Support-Aktionsleiste v7 herabstufen. Es sieht aus wie:
Machen Sie auch die Zielversion der Anwendung kleiner als 21.
Wenn Ihre App Android 5 unterstützt -> benötigen Sie eine benutzerdefinierte ToolBar. (Weil appcombat-v7: 21 einige Änderungen hat).
quelle