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

Изменить тему ListFragment, чтобы быть отличным от активности?

В принципе, я хочу установить свою тему активности в манифесте следующим образом:

android:theme="@android:style/Theme.Translucent.NoTitleBar"

И я хочу, чтобы моя активность загружала ListFragment с темой Theme.Holo.Dialog(определен в моем собственном стиле), однако я не могу просто вызвать setStyle (....) в своем фрагменте, как я мог если это был диалоговый диалог.

Я считаю, что я должен использовать ContextThemeWrapper, но мне трудно понять, какие вызовы мне нужно сделать. До сих пор в моем onCreateView у меня:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    LayoutInflater newInflater = inflater.cloneInContext(new ContextThemeWrapper(getActivity(), R.style.DialogThemeSelector));
    View inflatedView = newInflater.inflate(R.layout.favourites_print, container, false);
    .....

Но это не работает. Заранее спасибо. Питер.

* Редактировать * Стиль публикации:

<style name="DialogThemeSelector" parent="@android:style/Theme.Holo.Dialog"/>
4b9b3361

Ответ 1

Попробуйте получить новый LayoutInflater вместо преобразования предоставленного, например:

Context newContext = new ContextThemeWrapper(getActivity(), R.style.DialogThemeSelector);
LayoutInflater newInflater = (LayoutInflater) newContext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
View inflatedView = newInflater.inflate(R.layout.favourites_print, container, false);

Если это не сработает, я подозреваю, что в вашем style может быть что-то отсутствует.

Ответ 2

Я делаю это наивно: я определяю макеты элементов списка в XML, используя атрибут style, и, похоже, он работает. Элементы моего списка не столько касаются того, находятся ли они в фрагменте, либо нет. Я не пробовал стилизовать сам фрагмент, но поскольку элементы списка - единственное, что в нем, их стиль кажется достаточным.

Ответ 3

Возможно, я недопонимаю, но не можете ли вы просто задать тему в манифесте для активности, в которой хранится список?

Изменить: рассмотрев это, мой лучший совет - посмотреть на источник диалоговогофрагмента и попытаться воспроизвести поведение в собственном пользовательском фрагменте.

ИЛИ

Начните свой фрагмент в новой фрагментации =/

Ответ 4

Попробуйте использовать requestWindowFeature (Window.FEATURE_NO_TITLE); вместо android: theme = "@android: style/Theme.Translucent.NoTitleBar"

И поставьте манифест targetSdkVersion = "14" для использования Theme.Holo.