2012-02-03 11 views
28

Tengo un TextView utilizo como el título de mi página de menú:Incluir un TextView y anular el texto

<TextView 
    android:id="@+id/menuTextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Menu" 
    android:textColor="@color/white" 
    android:textSize="25sp" 
    android:textStyle="bold" /> 

Ahora necesito un TextView con el mismo color, tamaño y estilo en cada submenú en mi aplicación En lugar de copiar pegando todo el TextView a cada diseño y simplemente cambiar el texto en cada uno, pensé que haría un diseño con el TextView e incluirlo en cada vista del menú secundario, solo anulando el texto.

Mi código es el siguiente:

/layout/menutextview.xml:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/menuTextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/default" 
    android:textColor="@color/white" 
    android:textSize="25sp" 
    android:textStyle="bold" /> 

La incluye en cada archivo de diseño xml intenta anular el atributo de texto:

<include layout="@layout/menutextview" android:text="@string/menu" /> 

<include layout="@layout/menutextview" android:text="@string/settings" /> 

Pero el texto predeterminado se muestra en todas partes. ¿Alguien tiene un idéa de lo que podría ser el problema?

Saludos, Mattias

Respuesta

18

Bienvenido a Stackoverflow;)

incluir no puede ser utilizado para "overrride" niños propiedades. No sabe qué tipo de diseño incluirá, solo lo inflará y lo agregará al diseño actual.

Para cambiar dinámicamente el texto, debe hacerlo en el código.

final TextView textView1 = (TextView) findViewById(R.id.menuTextView); 
textView1.setText(R.string.menu); 

final TextView textView2 = (TextView) findViewById(R.id.settingsTextView); 
textView2.setText(R.string.settings); 
+1

esta es la solución más sencilla y fácil de usar que puede utilizar para este problema. –

+1

¿No hay un campo personalizado donde pueda pasar lo que quiera del xml al código? De esta manera: Luego en el código podría ir ((TextView) findViewById (R.id.menuTextView)). SetText (getCustom ()); – Mattias

+1

Quería lo mismo que usted, y de acuerdo con la documentación, solo puede anular los atributos de diseño (e identificación). – viplezer

14

Trate de usar estilos y tienen la TextView implementar ese estilo. Esto hará que sea más fácil mantener la coherencia en sus Vistas.

Cuestiones relacionadas