2010-01-18 15 views
26

Estoy creando un título personalizado para la actividad mediante la desactivación del estándar y la gestión de todo por mí mismo. Me pregunto si es posible reemplazar/el título estándar del tema a mis necesidades.Título personalizado con imagen

Puedo personalizar el tamaño, la imagen de fondo y el texto a través de temas cambiando los elementos de windowXYZStyle.

Lo único que no pude encontrar - cómo puedo agregar imágenes en lugar de texto. He intentado requestWindowFeature(Window.FEATURE_CUSTOM_TITLE) y le asigno un diseño personalizado, pero parece que no funciona.

EDITAR: Aquí hay un informe de sugerencias de prueba, el código está a continuación - resultado - la vista de imagen no se muestra.

Actividad

public class SettingsActivity extends PreferenceActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
     getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title); 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.settings); 

    } 
} 

XML : 

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/title" 
    android:layout_width="fill_parent" 
    android:layout_height="26dip" 
    android:paddingLeft="5dip" 
    android:background="@drawable/titlebar_bg" 
    android:layout_gravity="left|center" 
> 
    <ImageView 
     android:id="@+id/logo" 
     android:src="@drawable/title_logo" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 

Respuesta

35

Es posible establecer su propio diseño de título personalizado, sin embargo, importa el orden de ejecución. Debe hacer las cosas en este orden:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
setContentView(R.layout.my_layout); 
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.my_custom_title); 

Además, puede necesitar aumentar el tamaño del título; si no lo hace, la actividad puede ocultar la parte inferior de su diseño personalizado. Puede cambiar el tamaño agregando un tema que especifique el tamaño del título. Esto iría en un archivo XML valores:

<resources> 
    <style name="LargeTitleTheme"> 
     <item name="android:windowTitleSize">40dip</item> 
    </style> 
</resources> 

Entonces que había necesidad de establecer el tema para su actividad (o aplicación, si quieres toda la aplicación de tener esta barra de título personalizado) en AndroidManifest.xml:

<activity android:name=".MyCustomTitleActivity" android:theme="@style/LargeTitleTheme" /> 
+0

Hola Daniel, gracias por responder, lo hice antes de hacer la pregunta. Era tarde, así que podría estropear algo. ¿Has intentado esto? Pruébalo en la actividad que amplía PreferencesActivity y my_custom_title tiene un fondo personalizado y un logotipo (como vista de imagen) en él; para mí sí asignó un título personalizado y las vistas de texto se mostraron, y la vista de imágenes en my_custom_title no. Lo mismo ocurre con el fondo, que se puede resolver añadiendo un elemento más al LargeTitleTheme. –

+0

He hecho exactamente lo que describí anteriormente (tomé el código de ejemplo de mi fuente).Sin embargo, nunca antes lo he probado en una actividad de preferencias; tal vez haya algo más que deba hacer para anular esa barra de título. Sin embargo, no estoy seguro de entender su problema ahora; ¿reafirmar? –

+0

el problema es que la vista de imagen no se muestra en el título personalizado. Y necesito abofetear una imagen con el logo en lugar de texto. –

6

Siempre se puede utilizar:

requestWindowFeature(Window.FEATURE_NO_TITLE); 

y luego crear su propia barra de título dentro de la vista de su actividad.

+0

Si, eso es exactamente lo que estoy haciendo ahora. Estaba pensando que hay una forma de estándar de tema. Por ejemplo, la barra de título en la actividad de preferencia. Realmente no quiero meterme con diseños personalizados solo por el bien de la barra de título. –

+2

Estoy empezando a pensar que esta podría ser la mejor opción. Para empezar, evitaría el parpadeo de la barra de título cuando se abra la aplicación, así como la solución provisional que necesitaba para eliminar los márgenes de la capa que lo contiene, para que no vea un borde gris alrededor de la barra de título. – Casebash

1

¿Estás seguro de que es necesario utilizar una imagen en el título en lugar de sólo la combinación como parte de su imagen de fondo de y dejando en blanco el título? Usando una imagen de NinePatch, esperaría que usted pudiera lograr un resultado que se vería bien independientemente del dispositivo.

1

He utilizado el siguiente código para adaptarse a mi título personalizado a la pantalla

<ImageView 
    android:id="@+id/header_img" 
    android:src="@drawable/header_img" 
    android:layout_width="700dip" 
    android:layout_height="70dip" /> 
Cuestiones relacionadas