Creo que no es necesario usar un título personalizado para cambiar el color de fondo a la barra de título. revisa esta publicación
Deepthi Jabili
Miraría la respuesta de Edwinfad en lugar de la anticuada aceptada.
zgc7009
Respuestas:
186
Este hilo lo ayudará a comenzar a construir su propia barra de título en un archivo xml y usarlo en sus actividades
Editar
Aquí hay un breve resumen del contenido del enlace anterior: esto es solo para establecer el color del texto y el fondo de la barra de título, sin cambio de tamaño, sin botones, solo la muestra más simple
res / layout / mytitle.xml : esta es la vista que representará la barra de título
<?xml version="1.0" encoding="utf-8"?><TextViewxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/myTitle"android:text="This is my new title"android:layout_width="fill_parent"android:layout_height="fill_parent"android:textColor="@color/titletextcolor"/>
res / values / themes.xml : queremos mantener el tema de Android predeterminado y solo necesitamos cambiar el color de fondo del fondo del título. Así que creamos un tema que hereda el tema predeterminado y configuramos el estilo de fondo a nuestro propio estilo.
En AndroidMANIFEST.xml , establezca el atributo del tema en la aplicación (para toda la aplicación) o en las etiquetas de actividad (solo esta actividad)
La mayoría de las veces, solo proporcionar un enlace es una respuesta muy barata y en stackoverflow no le gusta mucho la respuesta. Trate de obtener algunos de los conocimientos del enlace a esta página. Obtendrá más y más conocimiento en la comunidad, e incluso si el enlace no funciona, su respuesta aún proporciona algunos términos de búsqueda que pueden dirigir a otras personas en la dirección.
Janusz
7
@Janusz: Tiene toda la razón, así que actualicé la publicación con la muestra más simple para que la gente pueda comenzar en lugar de leer el hilo en el enlace anterior
ccheneson
3
Después de sobrescribir el estilo de Android, no necesita agregar el título personalizado del código si solo desea cambiar el color de fondo
Janusz
1
Como dijo Janusz, no necesita tener una Vista personalizada si solo desea anular el estilo utilizado (no agregar nuevas Vistas). En ese caso, tampoco es necesario que solicite un FEATURE_CUSTOM_STYLE. Finalmente, puede definir el estilo a nivel de la aplicación para aplicarlo a todas sus actividades a la vez. Gracias por el código, por cierto.
Eric Kok
2
esto no cambia el color de fondo del título, solo se cambia el color del texto. incluso si estoy cambiando el color de la barra de título <color name = "titlebackgroundcolor"> # 3232CD </color>. ¿Estoy haciendo algo mal?
Shaista Naaz
18
Gracias por esta explicación clara, sin embargo, me gustaría agregar un poco más a su respuesta haciendo una pregunta vinculada (realmente no quiero hacer una nueva publicación ya que esta es el sótano de mi pregunta).
Declaro mi barra de título en una Superclase de la cual, todas mis otras actividades son para niños, para tener que cambiar el color de la barra solo una vez. También me gustaría agregar un ícono y cambiar el texto en la barra. Hice algunas pruebas y logré cambiar uno u otro, pero no ambos al mismo tiempo (usando setFeatureDrawable y setTitle). La solución ideal sería, por supuesto, seguir la explicación en el hilo dado en el enlace, pero como estoy declarando en una superclase, tengo un problema debido al diseño en setContentView y R.id.myCustomBar, porque si yo recuerda que puedo llamar a setContentView solo una vez ...
EDITAR
Encontré mi respuesta:
Para aquellos a quienes, como a mí, les gusta trabajar con superclases porque es excelente para tener un menú disponible en todas partes en una aplicación, funciona igual aquí.
(tienes que declarar la vista de texto como variable de clase protegida)
Y luego, el poder de esto es que, en todas partes de su aplicación (si, por ejemplo, todas sus actividades son secundarias de esta clase), solo tiene que llamar
customTitleText.setText("Whatever you want in title");
y se editará su barra de título.
El XML asociado en mi caso es (R.layout.customtitlebar):
Hay otra forma de cambiar el color de fondo, sin embargo, es un truco y podría fallar en futuras versiones de Android si se cambia la jerarquía de vista de la ventana y su título. Sin embargo, el código no se bloqueará, solo se perderá la configuración del color deseado, en tal caso.
muy bueno y simple también. Pero quiero preguntarte una cosa que este lo está haciendo desde el código, por lo que se retrasa un poco. Para evitar tal situación, tendré que escribir todo en el xml y nada en el código. Entonces, ¿puedes guiarme en eso?
Shaista Naaz
Creo que tiene la solución en la respuesta seleccionada arriba. Debe definir un tema personalizado para la actividad y configurar su android: windowTitleBackgroundStyle en el color que desee.
mikeplate
7
Este código ayuda a cambiar el fondo de la barra de título mediante programación en Android. Cambie el color a cualquier color que desee.
Esto se introdujo en API 11 (3.0 Honeycomb) que ciertamente está lo suficientemente desactualizado en este punto como para considerar esta opción válida.
zgc7009
Pero todavía lo estoy usando en todas mis aplicaciones recientes con targetSdkVersion = "23" sin obtener ninguna información obsoleta.
Edwinfad
Absolutamente, está 100% bien usar esto. No ha sido reemplazado por nada, pero debe evitarse usarlo antes de API 11 (lo que muy pocas personas harán), al menos sin una biblioteca de compatibilidad.
zgc7009
Célebre. @ zgc7009
Edwinfad
1
Use getSupportActionBar () en su lugar si está usando AppCompatActivity
¿Cómo / dónde puedo crear una barra de título propia / personalizada?
Thizzer
2
Eche un vistazo platforms/android-2.1/data/res/layout/screen.xmlal SDK. Parece definir un título allí. Puede examinar con frecuencia diseños como este y pedir prestado el
style="?android:attr/windowTitleStyle"
estilos que luego puede usar y anular en sus propios TextViews.
Es posible que incluso pueda seleccionar el título para modificarlo directamente haciendo:
TextView title =(TextView)findViewById(android.R.id.title);
¿Esto todavía funciona con Lollipop? titleView parece devolver nulo para mí.
WORMSS
1
Existe una alternativa más fácil para cambiar el color de la barra de título, utilizando la biblioteca de soporte de appcompat v7 proporcionada por Google.
Las cosas parecen haber mejorado / facilitado desde Android 5.0 (API nivel 21).
Creo que lo que estás buscando es algo como esto:
<stylename="AppTheme"parent="AppBaseTheme"><!-- Top-top notification/status bar color:--><!--<item name="colorPrimaryDark">#000000</item>--><!-- App bar color:--><item name="colorPrimary">#0000FF</item></style>
Respuestas:
Este hilo lo ayudará a comenzar a construir su propia barra de título en un archivo xml y usarlo en sus actividades
Editar
Aquí hay un breve resumen del contenido del enlace anterior: esto es solo para establecer el color del texto y el fondo de la barra de título, sin cambio de tamaño, sin botones, solo la muestra más simple
res / layout / mytitle.xml : esta es la vista que representará la barra de título
res / values / themes.xml : queremos mantener el tema de Android predeterminado y solo necesitamos cambiar el color de fondo del fondo del título. Así que creamos un tema que hereda el tema predeterminado y configuramos el estilo de fondo a nuestro propio estilo.
res / values / styles.xml : aquí es donde configuramos el tema para usar el color que queremos para el fondo del título
res / values / colors.xml - Establezca aquí el color que desee
En AndroidMANIFEST.xml , establezca el atributo del tema en la aplicación (para toda la aplicación) o en las etiquetas de actividad (solo esta actividad)
Desde la actividad (llamada CustomTitleBar):
fuente
Gracias por esta explicación clara, sin embargo, me gustaría agregar un poco más a su respuesta haciendo una pregunta vinculada (realmente no quiero hacer una nueva publicación ya que esta es el sótano de mi pregunta).
Declaro mi barra de título en una Superclase de la cual, todas mis otras actividades son para niños, para tener que cambiar el color de la barra solo una vez. También me gustaría agregar un ícono y cambiar el texto en la barra. Hice algunas pruebas y logré cambiar uno u otro, pero no ambos al mismo tiempo (usando setFeatureDrawable y setTitle). La solución ideal sería, por supuesto, seguir la explicación en el hilo dado en el enlace, pero como estoy declarando en una superclase, tengo un problema debido al diseño en setContentView y R.id.myCustomBar, porque si yo recuerda que puedo llamar a setContentView solo una vez ...
EDITAR Encontré mi respuesta:
Para aquellos a quienes, como a mí, les gusta trabajar con superclases porque es excelente para tener un menú disponible en todas partes en una aplicación, funciona igual aquí.
Solo agregue esto a su superclase:
(tienes que declarar la vista de texto como variable de clase protegida)
Y luego, el poder de esto es que, en todas partes de su aplicación (si, por ejemplo, todas sus actividades son secundarias de esta clase), solo tiene que llamar
y se editará su barra de título.
El XML asociado en mi caso es (R.layout.customtitlebar):
fuente
Hay otra forma de cambiar el color de fondo, sin embargo, es un truco y podría fallar en futuras versiones de Android si se cambia la jerarquía de vista de la ventana y su título. Sin embargo, el código no se bloqueará, solo se perderá la configuración del color deseado, en tal caso.
En su Actividad, como onCreate, haga:
fuente
Este código ayuda a cambiar el fondo de la barra de título mediante programación en Android. Cambie el color a cualquier color que desee.
fuente
en el código anterior puede probar puede usar el título en lugar de la barra de título, esto afectará a toda la actividad en su aplicación
fuente
Supongo que no. Puede crear una actividad sin título y crear su propia barra de título en el diseño de la actividad.
Marque esto , Línea 63 y más abajo:
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1)
establece vista personalizada en lugar de vista de título predeterminada.
fuente
Eche un vistazo
platforms/android-2.1/data/res/layout/screen.xml
al SDK. Parece definir un título allí. Puede examinar con frecuencia diseños como este y pedir prestado elstyle="?android:attr/windowTitleStyle"
estilos que luego puede usar y anular en sus propios TextViews.Es posible que incluso pueda seleccionar el título para modificarlo directamente haciendo:
fuente
Prueba con el siguiente código
También use este enlace, es muy útil: http://nathanael.hevenet.com/android-dev-changing-the-title-bar-background/
fuente
Existe una alternativa más fácil para cambiar el color de la barra de título, utilizando la biblioteca de soporte de appcompat v7 proporcionada por Google.
Vea este enlace sobre cómo configurar esta biblioteca de soporte: https://developer.android.com/tools/support-library/setup.html
Una vez que haya hecho eso, es suficiente agregar las siguientes líneas a su archivo res / values / styles.xml:
(asumiendo que "titlebackgroundcolor" está definido en su res / values / colors.xml, por ejemplo:
)
fuente
Las cosas parecen haber mejorado / facilitado desde Android 5.0 (API nivel 21).
Creo que lo que estás buscando es algo como esto:
Vea aquí para referencia:
https://developer.android.com/training/material/theme.html#ColorPalette
fuente
He hecho esto cambiando los valores de color de estilo en "res" -> "valores" -> "colors.xml"
Esto cambiará los colores de todo el proyecto, lo cual me parece bien.
fuente
puedes usarlo.
fuente
Pegue este código después de setContentView o en onCreate
si tiene un código de color, utilice este;
si desea un código específico de la biblioteca de colores, use esto;
fuente