2010-07-23 13 views
9

Creé una barra de título personalizada para mi aplicación que funciona. Sin embargo, cuando la aplicación se carga por primera vez, el nombre de la aplicación se muestra en la barra de título por un momento antes de que aparezca mi texto. ¿Cómo evito que esto suceda?Detener el nombre de la aplicación para que destelle en la barra de título

volví mi barra de título personalizado en mi actividad principal aquí:

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

mytitle.xml es donde hice mi texto:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/myTitle" 
    android:text="my text" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" 
    android:textAppearance="?android:attr/textAppearance" 
    /> 

Mi fondo de la barra de título no parpadea, simplemente el texto.

Gracias.

Respuesta

11

explicación básica: la hora de lanzar una aplicación, para responder lo más rápidamente posible al usuario, Android muestra primero una ventana de "vista previa" de la aplicación antes de que comience la crianza de su proceso. Lo hace tomando la información disponible en la aplicación AndroidManifest.xml y creando una ventana que se ve como si fuera una actividad vacía para ella. Por lo tanto, debe establecer el tema en el manifiesto para que coincida lo más fielmente posible con su interfaz de usuario real.

Para el caso de un título personalizado, no hay mucho que pueda hacer, porque el aspecto del título dependerá de lo que realmente hace el código y aún no se está ejecutando. Lo mejor que probablemente pueda hacer es usar android:theme="@android:style/Theme.NoTitleBar" para que la ventana de vista previa no intente mostrar ninguna barra de título en absoluto ... por supuesto, en su actividad deberá borrar esto llamando al setTheme(android.R.style.Theme) para volver al tema predeterminado .

Elaborar un poco de en qué parte AndroidManifest.xml este tiene que ser colocado:

<application 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.NoTitleBar" > 
+0

OK puse android: theme = "@ android: style/Theme.NoTitleBar" en el manifiesto bajo mi actividad principal pero ahora se bloquea cuando llego a esta línea en mi actividad: requestWindowFeature (Window.FEATURE_CUSTOM_TITLE); – Dominic

+0

Debe llamar a setTheme() antes que a nada, para cambiar a un tema que tenga una barra de título. Por ejemplo, setTheme (android.R.style.Theme). – hackbod

+0

¡Eso lo hizo! Gracias. – Dominic

0

Bueno, podría intentar simplemente configurar primero la barra de título, antes de establecer el contenido principal.

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

Lo intenté pero no funcionó. – Dominic

1

Otra solución podría fijar la etiqueta:

android:label=""

En todas las actividades en el Manifiesto archivo.

Cuestiones relacionadas