Establecer el color de fondo del título

En mi aplicación de Android, quiero que la barra de título estándar / básica cambie de color.

Para cambiar el color del texto que ha setTitleColor(int color) , ¿hay alguna manera de cambiar el color de fondo de la barra?

Este hilo lo ayudará a comenzar a construir su propia barra de título en un archivo xml y a 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 cambiar el 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 predeterminado de Android y solo tenemos que cambiar el color de fondo del fondo del título. Así que creamos un tema que hereda el tema predeterminado y establece el estilo de fondo para nuestro propio estilo.

     

res / values ​​/ styles.xml – Aquí es donde establecemos el tema para usar el color que queremos para el fondo del título

     

res / values ​​/ colors.xml – Establezca aquí el color que desea

   #3232CD #FFFF00  

En AndroidMANIFEST.xml , establezca el atributo de tema en la aplicación (para toda la aplicación) o en las tags de actividad (solo esta actividad)

  

De la actividad (llamada CustomTitleBar):

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.main); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mytitle); } 

Gracias por esta explicación clara, sin embargo, me gustaría añadir un poco más a su respuesta haciendo una pregunta vinculada (realmente no quiero hacer una nueva publicación ya que esta es la base de mi pregunta).

Estoy declarando mi barra de título en una Superclase de la cual, todas mis otras actividades son niños, para tener que cambiar el color de la barra solo una vez. También me gustaría agregar un icono y cambiar el texto en la barra. Hice algunas pruebas y logré cambiar una u otra, pero no ambas al mismo tiempo (usando setFeatureDrawable y setTitle). La solución ideal sería, por supuesto, seguir la explicación en el hilo del enlace, pero como declaro en una superclase, tengo un problema debido al diseño en setContentView y R.id.myCustomBar, porque si recuerda bien, puedo llamar a setContentView solo una vez …

EDITAR Encontré mi respuesta:

Para aquellos que, como a mí, les gusta trabajar con superclases porque es genial para tener un menú disponible en todas partes en una aplicación, funciona igual aquí.

Solo agrega esto a tu superclase:

 requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.customtitlebar); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.customtitlebar); customTitleText = (TextView) findViewById(R.id.customtitlebar); 

(debe 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 hijos de esta clase), solo tiene que llamar

 customTitleText.setText("Whatever you want in title"); 

y su barra de título será editada.

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 versiones futuras 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á, simplemente omita configurar el color deseado, en tal caso.

En tu actividad, como onCreate, haz:

 View titleView = getWindow().findViewById(android.R.id.title); if (titleView != null) { ViewParent parent = titleView.getParent(); if (parent != null && (parent instanceof View)) { View parentView = (View)parent; parentView.setBackgroundColor(Color.rgb(0x88, 0x33, 0x33)); } } 
 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); View titleView = getWindow().findViewById(android.R.id.title); if (titleView != null) { ViewParent parent = titleView.getParent(); if (parent != null && (parent instanceof View)) { View parentView = (View)parent; parentView.setBackgroundColor(Color.RED); } } 

en el código anterior puede probar que puede usar el título en lugar de la barra de título, esto afectará a toda la actividad en su aplicación

Este código ayuda a cambiar el fondo de la barra de título programáticamente en Android. Cambie el color a cualquier color que desee.

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_layout); getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#1c2833"))); } 

Supongo que no. Puede crear actividad sin título y crear su propia barra de título en el diseño de la actividad.

Verifique esto , Línea 63 y abajo:

getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1)

establece la vista personalizada en lugar de la vista de título predeterminada.

Echa un vistazo a las platforms/android-2.1/data/res/layout/screen.xml del SDK. Parece definir un título allí. Con frecuencia puede examinar diseños como este y tomar prestados los style="?android:attr/windowTitleStyle" que luego puede usar y anular en sus propios TextViews.

Incluso puede seleccionar el título para ajustes directos haciendo:

 TextView title = (TextView)findViewById(android.R.id.title); 

Pruebe con el siguiente código

 View titleView = getWindow().findViewById(android.R.id.title); if (titleView != null) { ViewParent parent = titleView.getParent(); if (parent != null && (parent instanceof View)) { View parentView = (View)parent; parentView.setBackgroundColor(Color.RED); } } 

También utilizo este enlace es muy útil: http://nathanael.hevenet.com/android-dev-changing-the-title-bar-background/

Existe una alternativa más fácil para cambiar el color de la barra de título, utilizando la biblioteca de soporte de v7 appcompat 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:

    

(suponiendo que “titlebackgroundcolor” está definido en res / values ​​/ colors.xml, por ejemplo:

 #0000AA 

)

Las cosas parecen haber mejorado / ser más fáciles desde Android 5.0 (API nivel 21).

Creo que lo que estás buscando es algo como esto:

  

Ver aquí para referencia:

https://developer.android.com/training/material/theme.html#ColorPalette