Entonces, acabo de actualizar mi base de código a Lollipop y tengo problemas con la barra de acción. Estoy usando AppCompat y ActionBarActivity e inflando una vista personalizada. Parece que la vista personalizada ya no ocupa todo el ancho de la pantalla, dejando una delgada franja a la izquierda
Como solía verse
Como se ve ahora
Este es el código que estoy usando para configurar la barra de acción. ¿Alguien tiene alguna idea?
final ActionBar actionBar = getSupportActionBar();
if(actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setCustomView(R.layout.action_bar_content_search_custom_view);
actionBar.setBackgroundDrawable(null);
// actionBar.setStackedBackgroundDrawable(null);
TextView title = (TextView) actionBar.getCustomView().findViewById(R.id.action_bar_title);
title.setText(R.string.youtube);
ImageView back = (ImageView) actionBar.getCustomView().findViewById(R.id.action_bar_back);
back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
Editar
Sacar la vista personalizada y cambiar el fondo ahora ocupa todo el ancho. Entonces, el problema es, ¿cómo podemos hacer que un CustomView ocupe todo el ancho de ActionBar?
android
android-actionbar
android-appcompat
android-5.0-lollipop
Stevie Kideckel
fuente
fuente
appcompat-v7
.ImageView
. Intente desactivarlo para empezar.Respuestas:
Parece que esto se debe a los últimos cambios
ActionBar
en laappcompat-v7
actualización reciente . Parece que hay cambios significativos en cómo debe manejar las barras de acción.Enfrenté el mismo problema y después de leer la
ActionBar
documentación , y especialmente la siguiente cita, encontré una solución.A mi modo de ver, los
AppCompat
temas se cambiaron y por un lado parecían romper algunas cosas pero por el otro brindar mucha más flexibilidad. Recomiendo seguir estos pasos:.NoActionBar
estilo en su actividad como se describe en la cita anteriorandroid.support.v7.widget.Toolbar
diseño a su actividadapp:contentInsetStart="0dp"
atributo. Este es el problema principal con el margen que describe en su pregunta.Por lo general, se recomienda que lo haga en un archivo de diseño separado y lo use
include
en el diseño de su actividad, por lo que solo necesitará personalizar la barra de herramientas en un lugar si se usa en varias actividadesfindViewById
ysetSupportActionBar
en su ActividadonCreate
parasignal to the Activity which Toolbar should be treated as the Activity's action bar
onCreateOptionsMenu
se agregarán a la barra de herramientas y se tratará como la barra de acciones de la actividad.fuente
Error inflating class fragment
xmlns:app="http://schemas.android.com/apk/res-auto"
setCustomView
. Simplemente cree un archivo de diseño con los widgets que desea incluir en su barra de herramientas (por ejemplo, agregue vistas secundarias al archivo de diseño descrito en la sección 3 de la respuesta)En lugar de hacer tanto trabajo como lo menciona Muzikant y como esta respuesta
Debe agregar solo las dos últimas líneas de código para resolver su problema.
Espero que esto pueda ayudarlo a usted y a cualquier otra persona.
Agregue estas cuatro líneas al código anterior, de modo que el espacio del lado derecho también se elimine de la barra de acción de soporte.
fuente
Creo que también puedes hacer eso en estilos. prueba esto. lo probé en kitkat
fuente
Ninguna de las otras respuestas me funcionó, así que eché un vistazo a los estilos reales de AppCompat v7, que se encuentran aquí .
Si observa el estilo Base.Widget.AppCompat.ActionBar, tiene:
Entonces, obviamente, solo necesitamos anular esas propiedades en nuestro propio estilo de barra de acción:
Esto funcionó muy bien para mí, espero que también ayude a otros.
fuente
Después de mucho golpearme la cabeza contra el monitor, esto funcionó para mí.
GetCustomView (). GetParent () es lo que hizo el truco
fuente
También encontré este problema hoy, luego descubrí que estaba teniendo
res/values-v21/styles.xml
dentro de mi proyecto que fue generado automáticamente por Android Studio y esa es la causa.¿Por qué?
Porque mi
res/values-v21/styles.xml
contenido era:Y mi
res/values/styles.xml
contenido algo como:Luego, cuando ejecuté mi aplicación en Lollipop,
res/values-v21/styles.xml
se usó y eso causó el problema exacto que tenía OP. Así que llegué a una solución simple: simplemente eliminar:en
res/values-v21/styles.xml
fuente
al punto:
asegúrese de importar la barra de herramientas correcta -
android.support.v7.widget.Toolbar;
fuente
Escriba estas dos líneas además de su código
fuente