style full example custom bar android android-toolbar

full - Android API 21 Toolbar Padding



toolbar android material design (10)

¿Cómo me deshago 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:

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 Spinner. ¿Qué he hecho mal o qué debo hacer para deshacerme del relleno adicional?

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

Según las especificaciones de diseño de materiales, la ruleta debe ser de 72dp desde el lado izquierdo

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

Editar 2

Según la respuesta de Chris Bane a continuación, configuré 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 confundió durante varios días.


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

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

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

Para que coincida con la especificación de Diseño de material, hay un atributo adicional contentInsetStartWithNavigation que, de forma predeterminada, es 16dp. Cambie esto si también tiene un icono de navegación.


En caso de que alguien tropiece aquí ... también puede configurar el relleno , 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);


Esto es lo que hice y funciona perfectamente en todas las versiones de 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 (para ocultar el título predeterminado de la barra de herramientas)

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

Resultado con Keylines Mostrado


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 el relleno = 0, o contentInsetLeft = 0, o contentInsetStart = 0


Haga su 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 agregar espacio

sigue este enlace para obtener más información: consejos de Android


La respuesta anterior es correcta, pero todavía hay una cosa que podría crear problemas (al menos sí 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 usa 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 eso ayude.


Ok, si necesita 72dp, ¿no podría simplemente agregar la diferencia en el relleno en el archivo xml? De esta forma, mantienes el recuadro / relleno predeterminado de Android que quieren que usemos.

Entonces: 72-16 = 56

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

O simplemente puede cambiar los valores en los archivos Dimen.xml. eso es lo que estoy haciendo ahora. Cambia todo, el diseño completo, incluida la barra de herramientas cuando se implementa en la nueva forma adecuada de Android.

Dimen Resource File

El enlace que agregué muestra los valores de Dimen en 2dp porque lo cambié pero estaba configurado por defecto en 16dp. Solo para tu información...


Simplemente agregue estas dos líneas en la barra de herramientas. Luego obtenemos nuevo espacio lateral izquierdo eliminado porque 16dp por defecto.

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


Una combinación de

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

y

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

Esto funcionó para mí.


((Toolbar)actionBar.getCustomView().getParent()).setContentInsetsAbsolute(0,0);