Quelqu'un sait-il comment définir le remplissage entre l'icône d'accueil de l'ActionBar et le titre?
android
android-actionbar
Alesqui
la source
la source
Réponses:
J'ai adapté la réponse de Cliffus et assigné le logo-drawable dans ma définition de style de barre d'action, par exemple comme ceci dans res / style.xml:
Le dessinable ressemble à celui de Cliffus (ici avec l'icône du lanceur d'application par défaut) dans res / drawable / actionbar_space_between_icon_and_title.xml:
Dans le fichier android_manifest.xml, vous pouvez toujours définir une icône d'application différente (icône du lanceur sur le «bureau». Toute définition de logo différente ici est visible dans les activités sans barre d'action.
la source
EDIT : assurez-vous de définir ce dessinable en tant que LOGO , et non en tant qu'icône de votre application, comme l'ont fait certains commentateurs.
Créez simplement un XML dessinable et placez-le dans le dossier de ressources "drawable" (sans aucune densité ni autre configuration).
La dernière étape consiste à définir ce nouveau dessinable comme logo dans votre manifeste (ou sur l'objet Actionbar de votre activité)
Bonne chance!
la source
J'ai également rencontré un problème similaire, dans mon cas, je devais définir des titres de manière dynamique sur chaque activité en fonction du contenu.
Donc cela a fonctionné pour moi.
Si tout ce que vous voulez, c'est l'espacement, c'est la solution la plus simple à laquelle je puisse penser.
la source
app:titleMarginStart
attribut dans le XML de mise en page.C'est ainsi que j'ai pu définir le remplissage entre l'icône d'accueil et le titre.
Je n'ai pas trouvé de moyen de personnaliser cela via les styles xml ActionBar. Autrement dit, le XML suivant ne fonctionne pas:
Cependant, si vous cherchez à atteindre cet objectif via xml, ces deux liens peuvent vous aider à trouver une solution:
https://github.com/android/platform_frameworks_base/blob/master/core/res/res/values/styles.xml
(Il s'agit de la disposition réelle utilisée pour afficher l'icône d'accueil dans une barre d'action) https://github.com/android/platform_frameworks_base/blob/master/core/res/res/layout/action_bar_home.xml
la source
padding
, il semble utilisermarginEnd
depuis l'api 17 - ce qui cassera probablement cette solution. Voir le mien ciIl s'agit d'une question courante dans la conception de matériaux, car vous souhaiterez peut-être aligner le titre de votre barre d'outils avec le contenu du fragment ci-dessous. Pour ce faire, vous pouvez remplacer le remplissage par défaut de "12dp" en utilisant l'attribut contentInsetStart = "72dp" dans votre mise en page toolbar.xml comme indiqué ci-dessous
toolbar.xml
Puis dans votre activité, appelez
Et vous vous retrouvez avec ceci:
la source
app:titleMarginStart="dimension"
pour cibler le titre directement.contentInsetStart
met un espace entre l'icône d'accueil et le titre, la réponse pourrait au moins le dire. Mon test tout à l'heure aveccontentInsetStart
semblait mettre l'espace avant le logo (ce qui n'est certes pas le même que l'icône d'accueil).Pour moi, seule la combinaison suivante a fonctionné, testée de l'API 18 à 24
où dans "app" se trouve:
xmlns:app="http://schemas.android.com/apk/res-auto"
par exemple.
la source
Si vous utilisez la barre d'outils d'AppCompat (android.support.v7.widget.Toolbar,> = révision 24, juin 2016), le remplissage entre l'icône et le titre peut être modifié avec la valeur suivante:
Pour améliorer ma réponse, vous pouvez l'utiliser sur votre barre d'outils directement dans votre activité ou vous pouvez créer un nouveau fichier de mise en page pour votre barre d'outils. Dans ce cas, il vous suffit d'importer @id de votre barre d'outils en utilisant la propriété include sur chaque vue nécessaire.
Vous pouvez ensuite importer votre mise en page sur votre activity.xml
la source
Utiliser des
titleMarginStart
œuvres pour moi. Exemple Xamarin:Définissez le logo comme ceci:
la source
J'ai utilisé \ t avant le titre et j'ai travaillé pour moi.
la source
J'utilise une image personnalisée au lieu du texte du titre par défaut à droite du logo de mes applications. Ceci est configuré par programme comme
Les problèmes avec les réponses ci-dessus pour moi sont que la suggestion de @ Cliffus ne fonctionne pas pour moi en raison des problèmes que d'autres ont décrits dans les commentaires et bien que le paramètre de remplissage programmatique @dushyanth ait fonctionné dans le passé, je pense que le fait que l'espacement est maintenant défini en utilisant
android:layout_marginEnd="8dip"
depuis l'API 17 la configuration manuelle du remplissage ne devrait avoir aucun effet. Voir le lien qu'il a posté sur git pour vérifier son état actuel.Une solution simple pour moi est de définir une marge négative sur ma vue personnalisée dans la barre d'action, comme ceci
android:layout_marginLeft="-14dp"
. Un test rapide montre que cela fonctionne pour moi sur 2.3.3 et 4.3 en utilisantActionBarCompat
J'espère que cela aide quelqu'un!
la source
J'ai résolu ce problème en utilisant une disposition de navigation personnalisée
En l'utilisant, vous pouvez personnaliser n'importe quoi dans le titre sur la barre d'action:
build.gradle
AndroidManifest.xml
styles.xml
action_bar.xml
la source
J'ai eu un problème similaire, mais avec un espacement entre le haut et l'icône / le logo de l'application personnalisée dans la barre d'action. La solution de Dushyanth de réglage du rembourrage a fonctionné par programme pour moi (réglage du rembourrage sur l'icône d'application / logo). J'ai essayé de trouver android.R.id.home ou R.id.abs__home ( ActionBarSherlock uniquement , car cela garantit la compatibilité descendante), et cela semble fonctionner sur les appareils 2.3-4.3 sur lesquels j'ai testé.
la source
Pour mon cas, c'est avec la barre d'outils que je l'ai résolu comme ceci:
ic_toolbar_drawble.xml
Dans mon Fragment, je vérifie l'API:
Bonne chance!
la source
Vous pouvez changer drawableSize de votre DrawerArrow comme ceci:
Ce n'est pas la bonne réponse, car vous ne pouvez pas choisir le côté de remplissage et la mise à l'échelle de l'icône DrawerArrow lorsque vous modifiez drawableSize (drawableSize = width = height). Mais vous pouvez vous éloigner de la gauche. À la marge de la droite faire
la source
J'ai utilisé cette méthode
setContentInsetsAbsolute(int contentInsetLeft, int contentInsetRight)
et ça marche!la source
Lorsque vous utilisez une barre d'outils personnalisée, vous pouvez utiliser
et dans la disposition de votre barre d'outils, définissez simplement
app:titleMarginStart="16dp"
Notez que vous devez définir l'icône en tant que logo, n'utilisez pas à la
getSupportActionBar().setIcon(R.drawable.logo)
place:getSupportActionBar().setLogo(R.drawable.logo)
la source
J'ai utilisé
AppBarLayout
et coutume de leImageButton
faire.Mon code Java:
la source
Vous pouvez également y parvenir par la méthode:
la source
Dans votre XML, définissez la vue
app:titleMargin
de votre barre d'outils comme suit:Ou dans votre code:
la source
ce travail pour moi d'ajouter un rembourrage au titre et pour l'
ActionBar
icône, je l'ai défini par programme.la source
Ajoutez simplement
" "
le nom de votre application.Il ajoutera un espace entre l'icône et le titrela source