Comment supprimer le remplissage supplémentaire dans la nouvelle barre d’outils avec Android API SDK version 21 (la bibliothèque de support)?
Je parle des flèches rouges sur cette image:
Voici le code que j'utilise:
<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>
Comme vous pouvez le constater, tous les marges appropriées ont la valeur 0, mais il y a toujours des marges autour du Spinner. Qu'ai-je fait de mal ou que dois-je faire pour me débarrasser de ce rembourrage supplémentaire?
Edit Certains se sont demandé pourquoi j'essayais de faire cela.
Selon les spécifications de Material Design, la casserole devrait être à 72dp du côté gauche
Je dois neutraliser le rembourrage que Google a mis là pour pouvoir placer correctement ma roulette:
Edit 2
Conformément à la réponse de Chris Bane ci-dessous, je règle le contentInsetStart sur 0. Pour la bibliothèque de support, vous devrez utiliser l'espace de nom de l'application:
<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>
J'espère que cela aide quelqu'un, il m'a confondu pendant plusieurs jours.
L'encart gauche est provoqué par contentInsetStart
de la barre d'outils, qui est par défaut 16dp.
Changez ceci en 72dp pour vous 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 est par défaut 16dp. Changer ceci si vous avez aussi une icône de navigation.
La réponse ci-dessus est correcte mais il y a toujours une chose qui pourrait créer des problèmes (Au moins, cela m'a créé un problème)
J'ai utilisé ce qui suit et cela ne fonctionne pas correctement sur les appareils plus anciens -
Android:contentInsetStart="0dp"
Android:contentInsetLeft="0dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
Le truc est ici, utilisez simplement ce qui suit -
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
et se débarrasser de -
Android:contentInsetStart="0dp"
Android:contentInsetLeft="0dp"
Et maintenant, cela devrait fonctionner correctement sur tous les appareils.
J'espère que ça aide.
Au cas où quelqu'un trébuche ici ... vous pouvez définir padding, par exemple:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
int padding = 200 // padding left and right
toolbar.setPadding(padding, toolbar.getPaddingTop(), padding, toolbar.getPaddingBottom());
Ou contentInset:
toolbar.setContentInsetsAbsolute(toolbar.getContentInsetLeft(), 200);
Ajoutez simplement ces deux lignes dans la barre d’outils. Ensuite, nous obtenons un nouvel espace côté gauche bcoz supprimé par défaut, il est 16dp.
Android:contentInsetStart="0dp"
app:contentInsetStart="0dp"
Faites votre barre d'outils comme:
<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/menuToolbar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_margin="0dp"
Android:background="@color/white"
Android:contentInsetLeft="10dp"
Android:contentInsetRight="10dp"
Android:contentInsetStart="10dp"
Android:minHeight="?attr/actionBarSize"
Android:padding="0dp"
app:contentInsetLeft="10dp"
app:contentInsetRight="10dp"
app:contentInsetStart="10dp"></Android.support.v7.widget.Toolbar>
Vous devez ajouter
contentInset
attribut pour ajouter un espacement
suivez ce lien pour en savoir plus - Android Tips
Voici ce que j'ai fait et cela fonctionne parfaitement sur toutes les versions d'Android.
toolbar.xml
<Android.support.v7.widget.Toolbar
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="56dp"
Android:background="@color/primary_color"
app:theme="@style/ThemeOverlay.AppCompat"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
<TextView
Android:id="@+id/toolbar_title"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_marginLeft="16dp" <!-- Add margin -->
Android:layout_marginStart="16dp"
Android:gravity="left|center"
Android:text="Toolbar Title" <!-- Your title text -->
Android:textColor="@color/white" <!-- Matches default title styles -->
Android:textSize="20sp"
Android:fontFamily="sans-serif-medium"/>
</Android.support.v7.widget.Toolbar>
MyActivity.Java (Pour masquer le titre par défaut de la barre d'outils)
getSupportActionBar().setDisplayShowTitleEnabled(false); // Hide default toolbar title
Résultat avec les lignes clés affichées
Une combinaison de
Android:padding="0dp"
Dans le XML pour la barre d'outils
et
mToolbar.setContentInsetsAbsolute(0, 0)
Dans le code
Cela a fonctionné pour moi.
cela fonctionne pour moi sur mon téléphone Android 7.11:
<!-- TOOLBAR -->
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:contentInsetStartWithNavigation="0dp">
<TextView
style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
Android:id="@+id/toolbar_title"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/create_account_title"
Android:textColor="@color/color_dark_grey"/>
</Android.support.v7.widget.Toolbar>
note: J'ai eu absolument aucun succès avec padding = 0, ni contentInsetLeft = 0, ni contentInsetStart = 0
Ok, donc si vous avez besoin de 72dp, ne pourriez-vous pas simplement ajouter la différence de remplissage dans le fichier XML? De cette façon, vous conservez les incrustations/rembourrages par défaut des androïdes qu’ils souhaitent que nous utilisions.
Donc: 72-16 = 56
Par conséquent: ajoutez un rembourrage de 56dp pour vous placer à un retrait total/marge de 72dp.
Ou vous pouvez simplement changer les valeurs dans les fichiers Dimen.xml. c'est ce que je fais maintenant. Il change tout, la présentation entière, y compris la barre d'outils lorsqu'elle est implémentée dans le nouveau sens Android correct.
Le lien que j'ai ajouté montre les valeurs de Dimen à 2dp car je les ai modifiées mais la valeur par défaut a été définie à 16dp. Juste FYI...