Подтвердить что ты не робот

Включить TextView и переопределить текст.

У меня есть TextView, который я использую в качестве заголовка моей страницы меню:

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

Теперь мне нужно TextView с тем же цветом, размером и стилем в каждом подменю моего приложения. Вместо копирования, вставляющего весь TextView в каждый макет и просто изменяя текст в каждом из них, я думал, что сделаю один макет с TextView и включу его в каждое представление подменю, только переопределяя текст.

Мой код выглядит следующим образом:

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

Включает в каждый XML файл макета попытку переопределить текстовый атрибут:

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

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

Но текст по умолчанию отображается везде. У кого-нибудь есть проблема в том, что проблема может быть?

С уважением, Маттиас

4b9b3361

Ответ 1

Добро пожаловать в StackOverflow;)

Include не может использоваться для "переопределения" дочерних свойств. Он не знает, какой тип макета вы включите, он только раздует его и добавит в текущий макет.

Чтобы динамически изменить текст, вам нужно сделать это в коде.

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);

Ответ 2

Попробуйте использовать стили и примените этот стиль TextView. Это упростит согласованность ваших представлений.