Как установить легкую всплывающую тему? - PullRequest
0 голосов
/ 14 мая 2018

My PopupWindow требуется легкая тема, поэтому я пытаюсь изменить ее, используя ContextThemeWrapper:

if (R.id.action_filter == item.getItemId()) {
    View filterView = getActivity().findViewById(R.id.action_filter);
    assert  filterView != null;
    Context context = new ContextThemeWrapper(filterView.getContext(),
            R.style.ThemeOverlay_AppCompat_ActionBar);
    FilterWindow menu = new FilterWindow(context); //PopupWindow
    menu.showAsDropDown(filterView, 0, -filterView.getHeight());
    return true;
}

private static class FilterWindow extends PopupWindow {

    FilterWindow(Context context) {
        super(context);

        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.menu_filter, null);
        setContentView(view);
        setOutsideTouchable(true);
        setFocusable(true);
    }
}

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

1 Ответ

0 голосов
/ 14 мая 2018

После изучения исходного кода и стилей AppCompat я понял, почему он не работает.Ниже приведен рабочий вариант:

if (R.id.action_filter == item.getItemId()) {
    View filterView = getActivity().findViewById(R.id.action_filter);
    assert  filterView != null;
    FilterWindow menu = new FilterWindow(getContext());
    menu.showAsDropDown(filterView, 0, -filterView.getHeight());
    return true;
}

private static class FilterWindow extends PopupWindow {

    FilterWindow(Context context) {
        super(context, null, R.attr.popupMenuStyle);

        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.menu_filter, null);
        setContentView(view);
        setOutsideTouchable(true);
        setFocusable(true);
    }
}

Конечно, вам также нужно извлечь всплывающую тему вашего Toolbar из ThemeOverlay.AppCompat.Light.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...