2010-07-10 10 views
6

¿Cómo se usa el estilo de título predeterminado de ventana de androides para hacer mi propio TextView similar?Hacer vista de título personalizado de los valores predeterminados en Android

He hecho muchas conjeturas e hice un TextView que tiene todo lo que tiene la barra de título predeterminada, excepto por el sombreado de texto (y algunos rellenos/márgenes, etc., creo).

Aquí es esencialmente lo que he intentado:

MainUI.xml

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 

    setContentView(R.layout.main); 

    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_bar); 
} 

title_bar.xml

<?xml version="1.0" encoding="utf-8"?> 

<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/myTitle" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:textAppearance="@android:style/TextAppearance.WindowTitle" 
    android:background="@android:drawable/title_bar" 
    android:text="This is my new title" /> 

Editar:

he encontrado algunas interesantes artículos relacionados al makemachine y anddev.

Aunque no me gusta, copié algunos atributos de la implementación style.xml.

¿Hay alguna forma de evitar copiar los atributos de esta manera estática?

Lo siguiente representa casi perfecto, la diferencia es, de hecho, que el original "cortó" los primeros 2-3 píxeles de la sombra del título, mientras que mi TextView no lo hace.

<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/myTitle" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:gravity="center_vertical" 
    android:shadowColor="#BB000000" 
    android:shadowRadius="2.75" 
    android:singleLine="true" 
    android:textAppearance="@android:style/TextAppearance.WindowTitle" 
    android:background="@android:drawable/title_bar" 
    android:text="This is my new title" /> 

También es importante para anular el androide defecto: windowTitleBackgroundStyle con un color transparente, debido a que el defecto incluye algo de relleno, etc., que no desea ser envolver la barra de título personalizado.

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

Recuerde activar el tema en su AndroidManifest.xml

+0

No entiendo lo que estás tratando de hacer. ¿Estás dispuesto a copiar la barra de título predeterminada hecha por Android? – Macarse

+0

Sí, siempre que pueda modificarlo. Quiero que la barra de título también funcione como una barra de progreso :-) – Steinbitglis

+1

no sé si esto ayudará o no, pero [RomManager] (https://market.android.com/details?id=com.koushikdutta.rommanager&hl= es) lo hace cuando se descarga roms, la barra de título se llena de gris de izquierda a derecha a medida que se carga. si lo ejecuta mientras ejecuta el visor de Jerarquía, puede ver que tienen la barra de progreso y el círculo de progreso. –

Respuesta

0

probar esto funcionó para mí:

poner el resto del código en su lugar ..

super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
    setContentView(R.layout.main); 
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.main_header); 
    TextView home = (TextView) findViewById(R.id.home); 
     if (home != null) { 
      /* your code here */ 
      home.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // the action that u want to perform 
       Menu.this.finish(); 
       Intent i= new Intent(Main.this,Destination.class); 
       startActivity(i); 
      } 
     }); 
     } 

crear una archivo de diseño principal_cabecera

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 


    <RelativeLayout 
     android:id="@+id/relativeLayout1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" 
      android:text="Main Menu" 
      android:textStyle="bold" 
      android:textSize="10pt" /> 

     <TextView 
      android:id="@+id/home" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignBaseline="@+id/textView1" 
      android:layout_alignBottom="@+id/textView1" 
      android:layout_alignParentRight="true" 
      android:textStyle="bold" 
      android:text="Home" 
      android:textAppearance="?android:attr/textAppearanceLarge" /> 

    </RelativeLayout> 

</LinearLayout> 

aquí cuando ejecutamos el código, se mostrará una barra de título personalizada donde hay dos textos y cuando hagamos clic en eso irá a la siguiente clase (a su clase de destino). también podemos cambiar el color, la fuente de tamaño, etc. y también agregar botones, etc. a la barra de título personalizada.

Cuestiones relacionadas