Weiß jemand, wie man das Auffüllen zwischen dem Home-Symbol der ActionBar und dem Titel einstellt?
android
android-actionbar
Alesqui
quelle
quelle
Antworten:
Ich habe die Cliffus-Antwort angepasst und das Logo in meiner Actionbar-Stildefinition zugewiesen, zum Beispiel wie folgt in res / style.xml:
Das Drawable sieht wie das von Cliffus aus (hier mit dem Standard-App-Launcher-Symbol) in res / drawable / actionbar_space_between_icon_and_title.xml:
In der Datei android_manifest.xml können Sie immer noch ein anderes App-Symbol festlegen (Startsymbol auf 'Desktop'. Jede andere Logo-Definition hier ist in Aktivitäten ohne Aktionsleiste sichtbar.
quelle
BEARBEITEN : Stellen Sie sicher, dass Sie dieses Zeichen als LOGO festlegen , nicht als App-Symbol wie einige der Kommentatoren.
Machen Sie einfach ein XML-Zeichenzeichen und legen Sie es im Ressourcenordner "Zeichenbar" ab (ohne Dichte oder andere Konfiguration).
Der letzte Schritt besteht darin, dieses neue Zeichenelement als Logo in Ihrem Manifest (oder auf dem Aktionsleistenobjekt in Ihrer Aktivität) festzulegen.
Viel Glück!
quelle
Ich hatte auch ein ähnliches Problem: In meinem Fall musste ich die Titel für jede Aktivität je nach Inhalt dynamisch festlegen.
Das hat bei mir funktioniert.
Wenn Sie nur den Abstand wünschen, ist dies die einfachste Lösung, die ich mir vorstellen kann.
quelle
app:titleMarginStart
Attributs im Layout-XML.Auf diese Weise konnte ich die Auffüllung zwischen dem Home-Symbol und dem Titel einstellen.
Ich konnte jedoch keine Möglichkeit finden, dies über die ActionBar-XML-Stile anzupassen. Das heißt, das folgende XML funktioniert nicht:
Wenn Sie dies jedoch über XML erreichen möchten, können Sie über diese beiden Links eine Lösung finden:
https://github.com/android/platform_frameworks_base/blob/master/core/res/res/values/styles.xml
(Dies ist das tatsächliche Layout, mit dem das Startsymbol in einer Aktionsleiste angezeigt wird.) Https://github.com/android/platform_frameworks_base/blob/master/core/res/res/layout/action_bar_home.xml
quelle
padding
, er scheintmarginEnd
seit API 17 zu verwenden - was diese Lösung wahrscheinlich zerstören wird. Siehe meine untenDies ist eine häufige Frage in Material Design, da Sie möglicherweise den Titel Ihrer Symbolleiste mit dem Inhalt des folgenden Fragments ausrichten möchten. Zu diesem Zweck können Sie die Standardauffüllung von "12dp" überschreiben, indem Sie das Attribut contentInsetStart = "72dp" in Ihrem toolbar.xml-Layout verwenden, wie unten gezeigt
toolbar.xml
Rufen Sie dann in Ihrer Aktivität an
Und am Ende haben Sie Folgendes:
quelle
app:titleMarginStart="dimension"
direkt auf den Titel abzuzielen.contentInsetStart
zwischen dem Home-Symbol und dem Titel ein Leerzeichen steht, könnte die Antwort dies zumindest sagen. Mein Test mitcontentInsetStart
schien gerade das Leerzeichen vor dem Logo zu platzieren (was zugegebenermaßen nicht mit dem Home-Symbol identisch ist).Für mich hat nur die folgende Kombination funktioniert, getestet von API 18 bis 24
wo in "App" ist:
xmlns:app="http://schemas.android.com/apk/res-auto"
beispielsweise.
quelle
Wenn Sie die Symbolleiste von AppCompat verwenden (android.support.v7.widget.Toolbar,> = Revision 24, Juni 2016), kann der Abstand zwischen dem Symbol und dem Titel mit dem folgenden Wert geändert werden:
Um meine Antwort zu verbessern, können Sie sie in Ihrer Symbolleiste direkt in Ihrer Aktivität verwenden oder eine neue Layoutdatei für Ihre Symbolleiste erstellen. In diesem Fall müssen Sie nur die @ -ID Ihrer Symbolleiste mithilfe der include-Eigenschaft für jede benötigte Ansicht importieren.
Sie können dann Ihr Layout in Ihre activity.xml importieren
quelle
Mit
titleMarginStart
Arbeiten für mich. Xamarin Beispiel:Stellen Sie das Logo so ein:
quelle
Ich habe \ t vor dem Titel verwendet und für mich gearbeitet.
quelle
Ich verwende ein benutzerdefiniertes Bild anstelle des Standardtiteltextes rechts neben meinem Apps-Logo. Dies ist programmatisch wie eingerichtet
Die Probleme mit den obigen Antworten für mich sind @ Cliffus 'Vorschlag funktioniert bei mir aufgrund der Probleme, die andere in den Kommentaren umrissen haben, nicht, und während die programmatische Polsterung von @dushyanth in der Vergangenheit möglicherweise funktioniert hat, würde ich denken, dass die Tatsache der Abstand ist Jetzt mit einstellen,
android:layout_marginEnd="8dip"
da API 17 das manuelle Einstellen der Auffüllung keine Auswirkung haben sollte. Sehen Sie sich den Link an, den er an git gepostet hat, um den aktuellen Status zu überprüfen.Eine einfache Lösung für mich besteht darin, einen negativen Rand für meine benutzerdefinierte Ansicht in der Aktionsleiste festzulegen
android:layout_marginLeft="-14dp"
. Ein schneller Test zeigt, dass es für mich unter 2.3.3 und 4.3 funktioniertActionBarCompat
Hoffe das hilft jemandem!
quelle
Ich habe dieses Problem mithilfe eines benutzerdefinierten Navigationslayouts gelöst
Mit ihm können Sie alles im Titel in der Aktionsleiste anpassen:
build.gradle
AndroidManifest.xml
styles.xml
action_bar.xml
quelle
Ich hatte ein ähnliches Problem, aber mit dem Abstand zwischen dem Symbol und dem Logo der benutzerdefinierten App in der Aktionsleiste. Dushyanths Lösung zum Einstellen der Polsterung funktionierte programmatisch für mich (Einstellen der Polsterung auf dem App- / Logo-Symbol). Ich habe versucht, entweder android.R.id.home oder R.id.abs__home zu finden ( nur ActionBarSherlock , da dies die Abwärtskompatibilität gewährleistet), und es scheint auf 2.3-4.3-Geräten zu funktionieren, auf denen ich getestet habe.
quelle
Für meinen Fall habe ich es mit der Symbolleiste folgendermaßen gelöst:
ic_toolbar_drawble.xml
In meinem Fragment überprüfe ich die API:
Viel Glück!
quelle
Sie können drawableSize Ihres DrawerArrow folgendermaßen ändern:
Die Antwort ist nicht richtig, da Sie beim Ändern von drawableSize (drawableSize = width = height) nicht die Polsterseite und die Skalierung des DrawerArrow-Symbols auswählen können. Aber Sie können von links Rand. Um von rechts zu kanten
quelle
Ich habe diese Methode verwendet
setContentInsetsAbsolute(int contentInsetLeft, int contentInsetRight)
und es funktioniert!quelle
Wenn Sie eine benutzerdefinierte Symbolleiste verwenden, können Sie diese verwenden
und in Ihrem Symbolleistenlayout einfach einstellen
app:titleMarginStart="16dp"
Beachten Sie, dass Sie das Symbol als Logo festlegen müssen. Verwenden Sie
getSupportActionBar().setIcon(R.drawable.logo)
stattdessen nicht :getSupportActionBar().setLogo(R.drawable.logo)
quelle
Ich habe es gewohnt
AppBarLayout
undImageButton
getan.Mein Java-Code:
quelle
Sie können dies auch methodisch erreichen:
quelle
Stellen Sie in Ihrem XML
app:titleMargin
Folgendes in Ihrer Symbolleistenansicht ein:Oder in Ihrem Code:
quelle
Diese Arbeit für mich, um dem Titel eine Auffüllung hinzuzufügen, und für das
ActionBar
Symbol habe ich das programmgesteuert festgelegt.quelle
" "
Fügen Sie einfach Ihren App-Namen hinzu. Es wird ein Leerzeichen zwischen Symbol und Titel hinzugefügtquelle