titulo studio quitar personalizar icono example como cambiar boton bar app aplicación agregar actionbar android xml android-actionbar-compat

studio - como quitar la actionbar/toolbar de mi aplicación android



Android: eliminar el margen izquierdo del diseño personalizado de la barra de acción (20)

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.

Android Lollipop, la vista personalizada de AppCompat ActionBar no ocupa todo el ancho de la pantalla

¿Qué he cambiado?

Use la última versión de SDK:

<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="21" />

Añadir una 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>


¿Su aplicación es compatible con Android 5? Si no es compatible, puede degradar la versión de support actionbar v7. Se parece a:

compile ''com.android.support:appcompat-v7:19.0.+'' (No use v7: 21+)

También haga que la versión de destino de la aplicación sea inferior a 21.

targetSdkVersion 14

Si su aplicación es compatible con Android 5 -> necesitará una barra de herramientas personalizada. (Porque appcombat-v7: 21 tiene algún cambio).


Crea una barra de herramientas como esta:

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

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


Debe agregar esta línea app2: contentInsetStart = "0dp" en su barra de herramientas

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app2="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/colorPrimary" app2:contentInsetStart="0dp"/>


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

app:contentInsetStartWithNavigation="0dp"

Antes de :

Después :


En lugar de agregar una barra de herramientas en el diseño, puede configurar su vista personalizada como se muestra a continuación.

Toolbar parent = (Toolbar) customView.getParent(); parent.setContentInsetsAbsolute(0,0);


Encontré otra resolución (referencia appcompat-v7) que cambia el toolbarStyle, siguiendo el código:

<item name="toolbarStyle">@style/Widget.Toolbar</item> <style name="Widget.Toolbar" parent="@style/Widget.AppCompat.Toolbar"> <item name="contentInsetStart">0dp</item> </style>


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

<style name="AppTheme" parent="Theme.AppCompat.Light"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="actionBarStyle">@style/Actionbar</item> <item name="android:titleTextStyle">@style/ActionbarTitle</item> </style> <style name="Actionbar" parent="Widget.AppCompat.ActionBar"> <item name="contentInsetStart">0dp</item> <item name="contentInsetEnd">0dp</item> </style>

java (onCreate)

ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayShowTitleEnabled(false); actionBar.setDisplayHomeAsUpEnabled(false); actionBar.setDisplayUseLogoEnabled(false); actionBar.setDisplayShowCustomEnabled(true); ActionBar.LayoutParams layoutParams = new ActionBar.LayoutParams( ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.MATCH_PARENT ); View view = LayoutInflater.from(this).inflate(R.layout.actionbar_main, null); actionBar.setCustomView(view, layoutParams);


Kotlin

supportActionBar?.displayOptions = ActionBar.DISPLAY_SHOW_CUSTOM; supportActionBar?.setCustomView(R.layout.actionbar); val parent = supportActionBar?.customView?.parent as Toolbar parent?.setPadding(0, 0, 0, 0)//for tab otherwise give space in tab parent?.setContentInsetsAbsolute(0, 0)


No encontré una solución para mi problema (primera imagen) en ningún lado, 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

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); //NOTE THAT: THE PART SOLVED THE PROBLEM. android.support.design.widget.AppBarLayout abl = (AppBarLayout) findViewById(R.id.app_bar_main_app_bar_layout); abl.setPadding(0,0,0,0); }

Imagen 2


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:

<item name="android:background">@color/actionbar_bgcolor</item>

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)

int rightMargin = Build.VERSION.SDK_INT>=Build.VERSION_CODES.M ? 0 : 8; // may the same with actionbar leftMargin in px ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) view.getLayoutParams(); p.setMargins(p.leftMargin, p.topMargin, rightMargin, p.bottomMargin); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1){ p.setMarginEnd(rightMargin); } view.setLayoutParams(p);

El machenismo 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 de la superposición con la barra de estado del sistema en el dispositivo Android 5.0 o posterior.


Si está agregando la Toolbar través de XML, simplemente puede agregar atributos XML para eliminar insertos 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" />


Simplemente modifique sus styles.xml

<!-- ActionBar styles --> <style name="MyActionBar" parent="Widget.AppCompat.ActionBar"> <item name="contentInsetStart">0dp</item> <item name="contentInsetEnd">0dp</item> </style>


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


Solo agregue la app:contentInsetStart="0dp" a la barra de herramientas, elimine ese espacio restante.

Entonces su definición de la barra Google se ve así

<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" app:contentInsetStart="0dp" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

y se ve así


Usando AppCompatAcitivty puedes usar solo por

Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar); View logo = getLayoutInflater().inflate(R.layout.custom_toolbar, null); mToolbar.addView(logo, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); mToolbar.setContentInsetsAbsolute(0,0);


este trabajo para mi

toolbar.setPadding(0,0,0,0); toolbar.setContentInsetsAbsolute(0,0);


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

Usé este código en mi proyecto, buena suerte;


solo agregar android:padding="0dp" funciona para mí

<android.support.v7.widget.Toolbar xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="60dp" android:padding="0dp" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light">


ActionBar ab = getSupportActionBar(); ab.setDisplayShowHomeEnabled(true); ab.setDisplayShowCustomEnabled(true); setDisplayShowTitleEnabled(true); View customView = getLayoutInflater().inflate(R.layout.activity_main,null); //here activity_main.xml is the GUI design file. ab.setCustomView(customView); Toolbar parent =(Toolbar) customView.getParent(); //use V7 Toolbar import parent.setContentInsetsAbsolute(0, 0); setPadding(5,0,0,0); ab.setIcon(R.mipmap.ic_launcher);


<android.support.v7.widget.Toolbar 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="wrap_content" app:contentInsetLeft="0dp" app:contentInsetStart="0dp" android:paddingLeft="0dp">

Esto debería ser lo suficientemente bueno.