2011-12-07 14 views
6

He diseñado una barra de título personalizada para mi aplicación. Funciona bien para mí también. Pero hay un problema. El título predeterminado se ve (por solo un segundo), antes de que mi barra de título personalizada lo anule. ¿Hay alguna solución para desactivar la barra de título predeterminada que proporciona Android?cómo sobrescribir el título predeterminado con título personalizado en android

Mis códigos eran como ...

window_title.xml en res/layout

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/myTitle" 
android:text="custom title bar" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:textColor="@color/titletextcolor" 
android:gravity ="center"/> 

color.xml en res/Valores

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="customTheme" parent="android:Theme"> 
    <item name="android:windowTitleBackgroundStyle">@style/WindowTitleBackground </item> 
    </style> 
</resources> 

styles.xml en res/valores

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="titlebackgroundcolor">#303010</color> 
    <color name="titletextcolor">#FFFF00</color> 
</resources> 

themes.x ml en res/valora

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="WindowTitleBackground">  
     <item name="android:background">@color/titlebackgroundcolor</item>  
    </style> 
</resources> 

Y también había actualizado la actividad de mi manifest.xml, como

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.title" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="7" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:theme="@style/customTheme" 
     android:label="@string/app_name" > 
     <activity 
      android:name=".CustomTitleActivity" 
      android:theme="@style/customTheme" > 
      <intent-filter > 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 

y en mi método onCreate que había hecho como ..

super.onCreate(savedInstanceState); 
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
setContentView(R.layout.main); 
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.window_title); 
final TextView myTitle = (TextView) findViewById(R.id.myTitle); 
myTitle.setText("Converter"); 

Y esto también funciona bien

He codificado como en http://www.edumobile.org/android/android-programming-tutorials/creating-a-custom-title-bar/ y funciona bien también ...

¿Hay alguna forma de desactivar el título predeterminado que viene primero?

+0

sólo un pensamiento al azar, ¿Has intentado poner "setContentView" como la última línea del método onCreate? –

+0

es necesario escribir un título personalizado si no, entonces cambie esta línea android: text = "barra de título personalizada" a android: text = "" –

+0

@STT LCU & user370305: ya lo había intentado. mientras estoy codificando como, getWindow(). setFeatureInt (Window.FEATURE_CUSTOM_TITLE, R.layout.window_title); setContentView (R.layout.main); muestra error pero si lo puse como lo había hecho en cuestión, funciona bien –

Respuesta

1

por la que retransmitir en android para la barra de título simplemente el diseño de su barra de título que desee y la ajuste en la parte superior en su principal código de diseño y el uso siguiente en onCreate antes de diseño

requestWindowFeature(Window.FEATURE_NO_TITLE); 

aquí es ejemplo .. . definir su barra de título en su diseño principal como si está configurando main.xml a medida que el diseño de la actividad, entonces su main.xml debe ser como

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 
    //here i have used LinearLayout as example your's can be Relative or whatever 

//here my title bars layout starts containing an icon and a text your's can containing just text or whatever you want 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/my_title_background" 
    android:orientation="horizontal" > 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:layout_marginLeft="15dip" 
     android:src="@drawable/my_icon" /> 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:layout_marginLeft="15dip" 
     android:text="My Application title" 
     android:textColor="#FFFFFF" /> 
</LinearLayout> 

    //and here rest of your layut for your application functionality 
</LinearLayout> 

entonces en mi archivo de actividades de java, que contiene onCreate método() el código será así

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.main); 
    //restof code for my class 

usted no necesita configurar ninguna otra cosa para su barra de título como el establecimiento de temas y el establecimiento de otras características o permisos .......... espero que lo tienes

+0

¿puedes simplemente describir cómo puedo hacerlo? Soy nuevo en android. solo estudiando. Creo que he creado mi barra de título.y está funcionando bien. ¿Comprobarás mi código y me sugerirán dónde estoy equivocado? –

+0

ponga la línea anterior en usted onCreate(); –

+0

@April y sam.Janz: no querido ... tampoco funciona ... Lo intenté al poner ese código en mi oncreate. cuando lo hago, capta el error –

Cuestiones relacionadas