Estoy usando una vista de barra de acción personalizada, y como puede ver en la captura de pantalla a continuación, hay un espacio gris en blanco en la barra de acción. Quiero eliminarlo
Qué he hecho:
res / values-v11 / styles.xml
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
<item name="actionBarStyle">@style/ActionBarStyle</item>
</style>
res / values / my_custom_actionbar.xml
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="ActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
<item name="android:height">60dp</item>
</style>
</resources>
Manifiesto
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="19" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/AppName"
android:theme="@style/AppBaseTheme" >
<!-- activities... etc -->
</application>
Actividad principal
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
ActionBar actionbar = getSupportActionBar();
actionbar.setDefaultDisplayHomeAsUpEnabled(false);
actionbar.setDisplayHomeAsUpEnabled(false);
actionbar.setDisplayShowCustomEnabled(true);
actionbar.setDisplayShowHomeEnabled(false);
actionbar.setDisplayShowTitleEnabled(false);
actionbar.setDisplayUseLogoEnabled(false);
actionbar.setHomeButtonEnabled(false);
// Add the custom layout
View view = LayoutInflater.from(this).inflate(R.layout.actionbar, null, false);
actionbar.setCustomView(view);
}
He encontrado una publicación reciente, que señala que hay un problema con la última versión. También he actualizado ADT y SDK a Android 5.
La vista personalizada de Android ActionBar no llena al padre
No se que debo hacer.
Editar (solución parcial):
No funciona en Android <= API 10.
¿Qué he cambiado?
Use la última versión de SDK:
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="21" />
Añadir un toolbarStyle
:
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
<item name="actionBarStyle">@style/ActionBarStyle</item>
<item name="android:toolbarStyle">@style/ToolbarStyle</item>
<item name="toolbarStyle">@style/ToolbarStyle</item>
</style>
<style name="ToolbarStyle" parent="@style/Widget.AppCompat.Toolbar">
<item name="contentInsetStart">0dp</item>
<item name="android:contentInsetStart">0dp</item>
</style>
android
xml
android-actionbar-compat
Zbarcea Christian
fuente
fuente
Respuestas:
Si está agregando el
Toolbar
vía XML, simplemente puede agregar atributos XML para eliminar insertos de contenido.fuente
android.support.v7.widget.Toolbar
:app:contentInsetStartWithNavigation="0dp"
fue suficiente.prueba esto:
Usé este código en mi proyecto, buena suerte;
fuente
actionBar.setCustomView(R.layout.app_title_bar);
Toolbar parent =(Toolbar) actionBar.getCustomView().getParent();
parent.setContentInsetsAbsolute(0,0);
lugar de inflar el diseño.parent.setPadding(0, 0, 0, 0);
para tabletas tambiénEl recuadro izquierdo es causado por la barra de herramientas
contentInsetStart
que por defecto es 16dp.Cambie esto para alinearse 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.Resultó que esto es parte de una nueva especificación de diseño de materiales introducida en la versión 24 de la biblioteca de diseño.
https://material.google.com/patterns/navigation.html
Sin embargo, es posible eliminar el espacio extra agregando la siguiente propiedad al widget Barra de herramientas.
Antes de :
Después :
fuente
Encontré otra resolución (referencia appcompat-v7) que cambia el toolbarStyle, siguiendo el código:
fuente
Esto debería ser lo suficientemente bueno.
fuente
Simplemente modifique sus styles.xml
fuente
En lugar de agregar una barra de herramientas en el diseño, puede configurar su vista personalizada como se muestra a continuación.
fuente
Solo agregar
app:contentInsetStart="0dp"
a la barra de herramientas, elimine ese espacio restante.Entonces su definición de la barra Google se ve así
y se ve así
fuente
Usando
AppCompatAcitivty
puedes usar solo porfuente
Debe agregar esta línea app2: contentInsetStart = "0dp" en su barra de herramientas
fuente
app:contentInsetStart="0dp"
No encontré una solución para mi problema (primera imagen) en ninguna parte, pero al final termino con una solución más simple después de unas horas de excavación. Tenga en cuenta que probé con muchos atributos xml como
app:setInsetLeft="0dp"
, etc. pero ninguno de ellos me ayudó en este caso.Foto 1
El siguiente código resolvió este problema como en la Imagen 2
Imagen 2
fuente
Establecer los atributos "contentInset ..." en 0 en la barra de herramientas no funcionó para mí. ¡La solución de Nilesh Senta para actualizar el estilo funcionó!
styles.xml
java (onCreate)
fuente
Crea una barra de herramientas como esta:
siga este enlace para obtener más información - Consejos de Android
fuente
solo agregando
android:padding="0dp"
trabajo para mífuente
fuente
Puede usar el diseño relativo dentro del grupo de vista de la barra de herramientas en su archivo xml y ajustar las posiciones de los widgets según lo requiera para su caso de uso. No es necesario crear un diseño personalizado e inflarlo y adjuntarlo a la barra de herramientas. Una vez hecho esto en su código java, use setContentInsetsAbsolute (0,0) con su objeto de barra de herramientas antes de configurarlo como barra de acción de soporte en su diseño.
fuente
Sería mejor agregar un elemento de fondo al estilo de la barra de acción de la aplicación para que sea coherente con el color de fondo de la barra de acción personalizada:
Después de Android 6.0, la barra de acción incluso tiene un espacio de margen derecho y no se puede configurar. Agregue un margen derecho ajustando en la actividad de esta manera: (la vista es la barra de acción personalizada o un botón derecho en ella)
El machenism actionbar solo es compatible después de la aplicación Android 3.0+. Si usamos una barra de herramientas (de soporte lib v7) en su lugar, deberíamos diseñarla en cada xml de cada actividad, y ocuparnos del problema de la superposición con la barra de estado del sistema en el dispositivo Android 5.0 o posterior.
fuente
Kotlin
fuente
este trabajo para mi
fuente
Si revisa la documentación de la barra de herramientas, por defecto tiene un estilo definido y hay un elemento contentInsetStart.
Si desea anular este relleno, puede hacerlo de dos maneras.
1.Sobre el estilo y agregue su propio estilo con los valores contentInsetStart y contentInsetEnd
2.En XML puede definir directamente los valores contentInsetStart y contentInsetEnd
fuente
¿Su aplicación es compatible con Android 5? Si no es compatible, puede degradar la versión de support actionbar v7. Se parece a:
También haga que la versión de destino de la aplicación sea inferior a 21.
Si su aplicación es compatible con Android 5 -> necesitará una barra de herramientas personalizada. (Porque appcombat-v7: 21 tiene algún cambio).
fuente