Как переопределить стили для вложенных представлений макета? - PullRequest
1 голос
/ 12 июня 2011

Я пытаюсь переопределить TextAppearance.Medium в пользовательской теме, которая применяется ко всему моему приложению с соответствующей записью в моем манифесте приложения. По какой-то причине указанный мной стиль не применяется к представлениям, вложенным в ListView, который я заполняю с помощью пользовательского макета и SimpleAdapter. Стиль применяется к представлениям TextView, которые не являются элементами, привязанными к ListView .

Ниже приведены примеры определения темы и пользовательского макета.

Чтобы пояснить, у меня нет проблемы с заполнением списка элементами, использующими пользовательский макет, моя тема определенно применяется ко всему моему приложению, и я также знаю, что мой макет элемента списка может быть оптимизирован с помощью RelativeLayout. Я просто ищу ответ о том, почему мои элементы списка не имеют правильного стиля.

Я неправильно понимаю возможности наследования тем или есть дополнительные стили, специфичные для списка, которые мне нужно наследовать / переопределять?

Уровень API 7 (Android 2.1)

Тестирование с использованием HTC Evo 4G и стандартного устройства AVD


Определение темы

<style name="Theme" parent="android:Theme.Light.NoTitleBar">
  <item name="android:textAppearanceMedium">@style/TextAppearance.Medium</item>
</style>

<style name="TextAppearance.Medium" parent="android:style/TextAppearance.Medium">
  <item name="android:textColor">@android:color/black</item>
</style>

Определение макета элемента списка

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent" android:orientation="horizontal" android:padding="10dp">
    <TextView android:layout_width="wrap_content" android:text="TextView" android:id="@+id/jobItemDateDueTextView" android:layout_height="fill_parent" android:gravity="center" android:textStyle="bold" android:layout_marginRight="15dp"></TextView>
    <LinearLayout android:layout_width="wrap_content" android:layout_height="fill_parent" android:orientation="vertical">
        <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" android:id="@+id/jobItemHeaderTextView" android:maxLines="1" android:textAppearance="?android:attr/textAppearanceMedium"></TextView>
        <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" android:id="@+id/jobItemContentTextView"></TextView>
    </LinearLayout>
</LinearLayout>

1 Ответ

3 голосов
/ 13 июня 2011

Продолжая обсуждение в ветке комментариев выше, приложение Context не будет содержать ту же информацию о темах, что и ваша Activity. Используйте ваш экземпляр Activity, когда вам нужен Context для генерации элементов пользовательского интерфейса.

...