web-dev-qa-db-fra.com

Android Rembourrage de la barre d'outils API 21

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: enter image description here

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 desc

Je dois neutraliser le rembourrage que Google a mis là pour pouvoir placer correctement ma roulette: desc

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.

185
James Cross

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.

268
Chris Banes

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.

141
Varundroid

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);
9
worked

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"
9
Amit Walke

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

3
Aneh Thakur

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

enter image description here

3
Michael

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.

3
Jraco11

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

1

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.

Fichier de ressources Dimen

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...

0
JamisonMan111