Как программно установить тему для фрагмента? - PullRequest
0 голосов
/ 26 февраля 2020

Описание:

Я изменял свои темы действий, используя манифесты или, в некоторых случаях, когда мне приходилось использовать персонализированную тему программно. Вот что я делал:

setTheme(R.style.MyTheme);

У меня есть операция с переключением фрагментов ( Фрагмент A и Фрагмент B ). Мне нужно программно установить Тема A на Фрагмент A и Тема B на Фрагмент B .

Проблема:

Я понял, что мой setTheme, который я использую для своих действий, не работает для фрагментов.

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

Что я могу сделать, чтобы решить эту проблему?

Редактировать:

Мой "отец" фрагмент JAVA код:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){
    View view = inflater.inflate(R.layout.fragment_contenedor_perfil_alumno, container, false);

    viewPagerr = view.findViewById(R.id.view_pagerr);

return view;}

1 Ответ

0 голосов
/ 26 февраля 2020

Вы можете создать новую inflater с нужной темой и использовать ее для раздувания фрагмента root.

В вашем методе onCreateView(),

val inflater = LayoutInflater.from(ContextThemeWrapper(context, R.style.some_theme))
return inflater.inflate(R.layout.your_fragment_layout, parent, false)

Для Java,

LayoutInflater themedInflater = LayoutInflater.from(new 
ContextThemeWrapper(context, R.style.some_theme));
View view = themedIinflater.inflate(R.layout.fragment_contenedor_perfil_alumno, container, false);

// ... your other code whatever that is

return view;
...