Relleno de la barra de herramientas de la API 21 de Android


¿Cómo puedo deshacerme del relleno adicional en la nueva barra de herramientas con Android SDK API versión 21 (la biblioteca de soporte)?

Estoy hablando de las flechas rojas en esta imagen: introduzca la descripción de la imagen aquí

Aquí está el código que estoy usando:

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

Como puede ver, he establecido todo el relleno relevante en 0, pero todavía hay relleno alrededor del hilandero. ¿Qué he hecho mal o qué necesito hacer para deshacerme del relleno adicional?

Editar Algunos han cuestionado por qué estoy tratando de haz esto.

Según las especificaciones de Diseño de materiales, el hilandero debe ser 72dp desde el lado izquierdo desc

Necesito neutralizar el relleno que Google ha puesto allí para colocar correctamente mi spinner: desc

Edit 2

Según la respuesta de Chris Bane a continuación, establecí el contentInsetStart en 0. Para la biblioteca de soporte necesitará usar el espacio de nombres de la aplicación:

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

Espero que esto ayude a alguien, me había confundido durante varios días.

Author: Community, 2014-10-20

10 answers

El recuadro izquierdo es causado por la barra de herramientas contentInsetStart que por defecto es 16dp.

Cambie esto a 72dp para alinearse con la línea de clave.

Actualización para la biblioteca de soporte v24.0.0:

Para que coincida con la especificación de Material Design hay un atributo adicional contentInsetStartWithNavigation que por defecto es 16dp. Cambie esto si también tiene un icono de navegación.

 247
Author: Chris Banes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-24 11:22:47

La respuesta anterior es correcta, pero todavía hay una cosa que podría crear problemas (Al menos creó un problema para mí)

Usé lo siguiente y no funciona correctamente en dispositivos más antiguos -

android:contentInsetStart="0dp"
android:contentInsetLeft="0dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"

El truco está aquí solo use lo siguiente -

app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"

Y deshacerse de -

android:contentInsetStart="0dp"
android:contentInsetLeft="0dp"

Y ahora debería funcionar bien en todos los dispositivos.

Espero que ayude.

 135
Author: Varundroid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-18 05:10:25

En caso de que alguien más tropiece aquí... también puedes configurar padding , por ejemplo:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

int padding = 200 // padding left and right

toolbar.setPadding(padding, toolbar.getPaddingTop(), padding, toolbar.getPaddingBottom());

O contentInset:

toolbar.setContentInsetsAbsolute(toolbar.getContentInsetLeft(), 200);
 9
Author: worked,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-17 05:20:49

Simplemente agregue esta línea de dos en la barra de herramientas. A continuación, obtenemos nuevo eliminado lado izquierdo espacio bcoz por defecto es 16dp.

android:contentInsetStart="0dp"
app:contentInsetStart="0dp"
 8
Author: Amit Walke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-02 06:08:47

Haz tu barra de herramientas como:

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

Necesitas agregar

ContentInset

Atributo para añadir espaciado

Por favor, siga este enlace para más - Android Consejos

 3
Author: Aneh Thakur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-09 13:00:48

Una combinación de

android:padding="0dp" En el xml de la barra de herramientas

Y

mToolbar.setContentInsetsAbsolute(0, 0) En el código

Esto funcionó para mí.

 3
Author: Jraco11,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-18 22:46:51

Esto es lo que hice y funciona perfectamente en todas las versiones de Android.

Barra de herramientas.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>

Mi actividad.java (Para ocultar el título predeterminado de la barra de herramientas)

getSupportActionBar().setDisplayShowTitleEnabled(false); // Hide default toolbar title

Resultado con Keylines Mostrados

introduzca la descripción de la imagen aquí

 1
Author: Michael,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-20 15:37:34

Ok Así que si necesita 72dp, ¿no podría simplemente agregar la diferencia en el relleno en el archivo xml? De esta manera, mantendrás el recuadro/Relleno predeterminado de los Androides que quieren que usemos.

Entonces: 72-16 = 56

Por lo tanto: agregue relleno de 56dp para ponerse en un total de sangría/margen de 72dp.

O simplemente podría cambiar los valores en el Dimen.archivos xml. eso es lo que estoy haciendo ahora. Cambia todo, todo el diseño, incluida la barra de herramientas cuando se implementa en el nuevo Android adecuado manera.

Dimen Resource File

El enlace que agregué muestra los valores dimensionales en 2dp porque lo cambié pero estaba configurado por defecto en 16dp. Solo PARA TU INFORMACIÓN...

 0
Author: JamisonMan111,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-03 00:06:49

Esto funciona para mí en mi teléfono 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>

Nota: No tuve absolutamente ningún éxito con padding = 0, o contentInsetLeft=0, o contentInsetStart=0

 0
Author: Someone Somewhere,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-04 01:38:23
((Toolbar)actionBar.getCustomView().getParent()).setContentInsetsAbsolute(0,0);
 -1
Author: Ahmet Zorer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-15 15:44:38