2012-02-03 23 views
28

Mam TextView używać jako nagłówek mojej stronie menu:Dołącz TextView i zastąpić tekst

<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" /> 

Teraz muszę TextView w tym samym kolorze, wielkości i stylu na każdym podmenu w moim aplikacja. Zamiast kopiować cały tekst TextView do każdego układu i po prostu zmieniać tekst w każdym z nich myślałem, że zrobię jeden układ z TextView i uwzględnię go w każdym podmenu, tylko przesłonię tekst.

Mój kod wygląda następująco:

/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" /> 

Układ składa się każdy plik xml układ próbuje nadpisać atrybut tekstowy:

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

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

Ale domyślny tekst jest wyświetlany wszędzie. Czy ktoś ma wyobrażenie o tym, jaki może być problem?

Pozdrawiam, Mattias

Odpowiedz

18

Witamy StackOverflow;)

obejmować nie mogą być wykorzystywane do "Zignorować" Dzieci właściwości. Nie wie, jaki rodzaj układu uwzględnisz, tylko nadmuchi go i doda go do bieżącego układu.

Aby dynamicznie zmieniać tekst, musisz zrobić to w kodzie.

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

Jest to najbardziej proste i przyjazne dla obsługi rozwiązanie, którego można użyć do rozwiązania tego problemu. –

+1

Czy nie ma niestandardowego pola, w którym można przekazać, co chcę z xml do kodu? W ten sposób: Następnie w kodzie mogłem przejść ((TextView) findViewById (R.id.menuTextView)). SetText (getCustom ()); – Mattias

+1

Chciałem tego samego, co ty i zgodnie z dokumentacją możesz tylko przesłonić atrybuty układu (i id). – viplezer

14

Spróbuj użyć stylów i mają TextView realizować ten styl. Ułatwi to zachowanie spójności w widokach.

Powiązane problemy