Android: elimina el margen izquierdo del diseño personalizado de la barra de acciones
Estoy usando una vista de barra de acciones personalizada y, como puede ver en la captura de pantalla siguiente, hay un espacio gris en blanco en la barra de acciones. 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);
}
Encontré una publicación reciente que señala que hay un problema con la última versión. También actualicé ADT y SDK a Android 5.
La vista personalizada de Android ActionBar no llena el padre
No sé qué debo hacer.
Editar (solución parcial):
No funciona en Android <= API 10.
Android Lollipop, la vista personalizada de AppCompat ActionBar no ocupa todo el ancho de la pantalla
¿Qué he cambiado?
Utilice la última versión del SDK:
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="21" />
Agrega 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>
Si está agregando Toolbar
vía XML, simplemente puede agregar atributos XML para eliminar inserciones de contenido.
<android.support.v7.widget.Toolbar
xmlns:app="schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/primaryColor"
android:contentInsetLeft="0dp"
android:contentInsetStart="0dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
android:contentInsetRight="0dp"
android:contentInsetEnd="0dp"
app:contentInsetRight="0dp"
app:contentInsetEnd="0dp" />
prueba esto:
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayShowTitleEnabled(false);
View customView = getLayoutInflater().inflate(R.layout.main_action_bar, null);
actionBar.setCustomView(customView);
Toolbar parent =(Toolbar) customView.getParent();
parent.setPadding(0,0,0,0);//for tab otherwise give space in tab
parent.setContentInsetsAbsolute(0,0);
El recuadro izquierdo se debe a la barra de herramientas contentInsetStart
, que de forma predeterminada es 16 dp.
Cambie esto para alinearlo con la línea clave.
Actualización para la biblioteca de soporte v24.0.0:
Para coincidir con la especificación de Material Design, hay un atributo adicional contentInsetStartWithNavigation
que por defecto es 16dp. Cambie esto si también tiene un ícono 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 adicional agregando la siguiente propiedad al widget de la barra de herramientas.
app:contentInsetStartWithNavigation="0dp"
Antes :
Después :