J'utilise une vue de barre d'action personnalisée, et comme vous pouvez le voir dans la capture d'écran ci-dessous, il y a un espace gris vide dans la barre d'action. Je veux l'enlever.
Qu'est-ce que j'ai fait:
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>
Manifeste
<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>
Activité principale
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);
}
J'ai trouvé un post récent, qui souligne qu'il y a un problème avec la dernière version. J'ai également mis à jour ADT et SDK vers Android 5.
La vue personnalisée d'Android ActionBar ne remplit pas le parent
Je ne sais pas quoi faire.
Modifier (solution partielle):
Ne fonctionne pas sur Android <= API 10.
Android Lollipop, la vue personnalisée AppCompat ActionBar ne prend pas toute la largeur de l'écran
Qu'est-ce que j'ai changé:
Utilisez la dernière version sdk:
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="21" />
Ajoutez un 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>
la source
Réponses:
Si vous ajoutez le
Toolbar
via XML, vous pouvez simplement ajouter des attributs XML pour supprimer les encarts de contenu.la source
android.support.v7.widget.Toolbar
:app:contentInsetStartWithNavigation="0dp"
était suffisant.essaye ça:
J'ai utilisé ce code dans mon projet, bonne chance;
la source
actionBar.setCustomView(R.layout.app_title_bar);
Toolbar parent =(Toolbar) actionBar.getCustomView().getParent();
parent.setContentInsetsAbsolute(0,0);
plutôt que de gonfler la mise en page.parent.setPadding(0, 0, 0, 0);
pour les tablettesL'encart de gauche est provoqué par la barre d'outils
contentInsetStart
qui, par défaut, est 16dp.Modifiez-le pour l'aligner sur la ligne de touche.
Mise à jour pour la bibliothèque de support v24.0.0:
Pour correspondre à la spécification Material Design, il existe un attribut supplémentaire
contentInsetStartWithNavigation
qui, par défaut, est 16dp. Modifiez cela si vous avez également une icône de navigation.Il s'est avéré que cela faisait partie d'une nouvelle spécification de conception de matériaux introduite dans la version 24 de la bibliothèque de conception.
https://material.google.com/patterns/navigation.html
Cependant, il est possible de supprimer l'espace supplémentaire en ajoutant la propriété suivante au widget Barre d'outils.
Avant :
Après :
la source
J'ai trouvé une autre résolution (référence appcompat-v7) qui modifie le style de la barre d'outils, code suivant:
la source
Cela devrait être suffisant.
la source
Modifiez simplement vos styles.xml
la source
Au lieu d'ajouter une barre d'outils dans la mise en page, vous pouvez définir votre vue personnalisée comme indiqué ci-dessous.
la source
Ajouter uniquement
app:contentInsetStart="0dp"
à la barre d'outils supprimer cet espace laissé.Ainsi, votre définition de barre d'outils ressemble à ceci
et ça ressemble à ça
la source
En utilisant,
AppCompatAcitivty
vous pouvez utiliser simplement enla source
Vous devez ajouter cette ligne app2: contentInsetStart = "0dp" dans votre barre d'outils
la source
app:contentInsetStart="0dp"
Je n'ai trouvé aucune solution à mon problème (première photo) n'importe où, mais je me retrouve finalement avec une solution la plus simple après quelques heures de fouille. Veuillez noter que j'ai essayé avec beaucoup d'attributs xml comme
app:setInsetLeft="0dp"
, etc., mais aucun d'eux n'a aidé dans ce cas.Image 1
le code suivant a résolu ce problème comme dans l'image 2
Image 2
la source
La définition des attributs "contentInset ..." à 0 dans la barre d'outils ne fonctionnait pas pour moi. La solution de Nilesh Senta pour mettre à jour le style a fonctionné!
styles.xml
java (onCreate)
la source
Créez une barre d'outils comme celle-ci:
veuillez suivre ce lien pour en savoir plus - Astuces Android
la source
ajoutant seulement du
android:padding="0dp"
travail pour moila source
la source
Vous pouvez simplement utiliser la disposition relative dans le groupe de vues de la barre d'outils dans votre fichier xml et ajuster les positions des widgets selon vos besoins pour votre cas d'utilisation.Pas besoin de créer une disposition personnalisée et de la gonfler et de l'attacher à la barre d'outils. Une fois terminé dans votre code java, utilisez setContentInsetsAbsolute (0,0) avec votre objet de barre d'outils avant de le définir comme barre d'action de support dans votre mise en page.
la source
Il serait préférable d'ajouter un élément d'arrière-plan dans le style de la barre d'action de l'application pour correspondre à la couleur d'arrière-plan de la barre d'action personnalisée:
Après Android 6.0, la barre d'action a même un espace à droite et ne peut pas être définie. Ajoutez une marge droite en ajustant l'activité comme ceci: (la vue est la barre d'actions personnalisée ou un bouton droit dedans)
Le machenisme de la barre d'action est juste pris en charge après l'application Android 3.0+. Si nous utilisons une barre d'outils (de support lib v7) à la place, nous devons la disposer dans chaque xml de chaque activité, et prendre soin du problème de chevauchement avec la barre d'état du système dans l'appareil Android 5.0 ou version ultérieure.
la source
Kotlin
la source
ce travail pour moi
la source
Si vous consultez la documentation de la barre d'outils, par défaut, le style est défini et il existe un élément contentInsetStart.
Si vous souhaitez remplacer ce remplissage, cela peut être fait de deux manières.
Remplacez le style et ajoutez votre propre style avec les valeurs contentInsetStart et contentInsetEnd
2.En XML, vous pouvez définir directement les valeurs contentInsetStart et contentInsetEnd
la source
Votre application prend-elle en charge Android 5? Si ce n'est pas le cas, vous pouvez rétrograder la version de la barre d'action de support v7. Il semble comme:
également rendre la version cible de l'application inférieure à 21.
Si votre application prend en charge Android 5 -> vous aurez besoin de la barre d'outils personnalisée. (Devenir appcombat-v7: 21 ont un certain changement).
la source