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:
- Cómo especificar el modo de acción oscura con mi tema
- La barra de herramientas no se despliega incluso después de proporcionar el indicador "app: layout_scrollFlags"
- Expand / Collapse Animación de la barra de herramientas de Lollipop (Telegram app)
- Barra de herramientas: botón de menú de desbordamiento siempre mostrando
- Match_parent no funciona para la barra de herramientas con el diseño dentro
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 puedes ver, he ajustado todo el relleno relevante a 0, pero todavía hay relleno alrededor del Spinner. ¿Qué he hecho mal o qué debo hacer para deshacerme del relleno adicional?
Edit Algunos han cuestionado por qué estoy tratando de hacer esto.
Según las especificaciones del material de diseño, el hilador debe ser 72dp desde el lado izquierdo
Tengo que neutralizar el relleno Google han puesto allí con el fin de colocar correctamente mi hiladora:
Editar 2
Según la respuesta de Chris Bane a continuación, establezco 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 confundió durante varios días.
- Establecimiento de un divisor entre elementos en el menú de opciones
- Cómo puedo cambiar la alineación de las vistas secundarias de la barra de herramientas
- Cómo cambiar el color de título de Android con el diseño de Coordinador y la barra de herramientas personalizada
- Barra de herramientas de Android llena toda la pantalla
- Establecer el título inToolBar de Fragment en Android
- ¿Cómo puedo alinear el menú / iconos de la barra de herramientas Android a la izquierda como en la aplicación de Google Maps?
- Cómo eliminar el relleno superior y inferior de android.support.v7.widget.Toolbar?
- Animación de la barra de herramientas con LayoutTransition
La inserción izquierda es causada por contentInsetStart
de contentInsetStart
que por defecto es 16dp.
Cambiar esto a 72dp para alinear a la línea clave.
Actualización de la biblioteca de soporte técnico v24.0.0:
Para que coincida con la especificación Material Design hay un atributo adicional contentInsetStartWithNavigation
que por defecto es 16dp. Cambie esto si también tiene un icono de navegación.
Por encima de la respuesta es correcta, pero todavía hay una cosa que podría crear problemas (al menos no crear un problema para mí)
He utilizado lo siguiente y no funciona correctamente en los dispositivos más antiguos –
android:contentInsetStart="0dp" android:contentInsetLeft="0dp" app:contentInsetLeft="0dp" app:contentInsetStart="0dp"
El truco está aquí sólo tiene que utilizar el 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.
En caso de que alguien tropiece aquí … usted puede fijar el relleno también, 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);
Simpley añadir esta línea dos en la barra de herramientas. A continuación, obtener nuevo eliminado lado bcoz espacio por defecto 16dp.
android:contentInsetStart="0dp" app:contentInsetStart="0dp"
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 espacio
Sigue este enlace para obtener más información.
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í.
Aquí es lo que hice y funciona perfectamente en cada versión 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 líneas clave mostradas
Ok, así que si usted necesita 72dp, ¿no podría agregar la diferencia en el relleno en el archivo xml? De esta manera usted mantiene Androids predeterminado Inset / Padding que quieren que usemos.
Así: 72-16 = 56
Por lo tanto: añadir 56dp relleno para ponerse en un recuento / margen total de 72dp.
O simplemente puede cambiar los valores en los archivos Dimen.xml. Eso es lo que estoy haciendo ahora. Cambia todo, todo el diseño, incluyendo la barra de herramientas cuando se implementa en la nueva forma apropiada de Android.
Archivo de recursos de Dimen
El enlace que agregué muestra los valores de Dimen en 2dp porque lo cambié pero estaba predeterminado en 16dp. Sólo para tu información…
((Toolbar)actionBar.getCustomView().getParent()).setContentInsetsAbsolute(0,0);
- La altura de la vista Recycler anidada no envuelve su contenido
- Android M – comprobar el permiso de ejecución – cómo determinar si el usuario marcó "Nunca preguntar de nuevo"?