Как я могу стилизовать заголовок диалога MediaRouter?

Я использую mediarouter-v7 v23.1.1, чтобы показать диалог выбора chromecast / media router. Теперь я пытаюсь стилизовать эту вещь - хотя я мог бы изменить цвет фона и стиль текста элемента списка с помощью этого:

<style name="Theme.MediaRouter.Light">
    <item name="android:background">@color/orange</item>
    <item name="mediaRouteChooserPrimaryTextStyle">@style/my_custom_style</item>
</style>

Я не смог переопределить стиль заголовка диалога. Эта и другие попытки не увенчались успехом:

<style name="Theme.MediaRouter.Light">
    <item name="android:windowTitleStyle">@style/my_title_style</item>
</style>
<style name="my_item_style">
    <item name="android:textColor">@color/blue</item>
</style>

Как я понял, у диалога есть свое окно, поэтому android:windowTitleStyle темы (диалога), которую я переопределяю в моих пользовательских стилях, следует применять, но это не так. Я также изучил реализацию диалогового окна mediarouter, чтобы увидеть, делают ли они что-нибудь необычное (например, скрытие окна и добавление пользовательского элемента в качестве заголовка), но они этого не делают, они просто вызывают setTitle(...) на Dialog пример.

Что я делаю неправильно?

1 ответ

Решение

К сожалению, этот диалог не соответствует стандартной теме (в целом диалоги в Android довольно недружелюбны, но с ними труднее всего работать). Поскольку это диалоговое окно предоставляется медиа-маршрутизатором, вы можете предоставить настраиваемую тему, только если полностью ее заменить собственным диалоговым окном.

Вы можете попробовать создать подкласс MediaRouteDialogFactory и переопределить метод onCreateChooserDialogFragment() и передать свою реализацию в ActionProvide:

mediaRouteActionProvider.setDialogFactory (yourDialogFactoryImlementation)

Вы можете взглянуть на CCL, где я делаю похожую вещь не для диалога выбора, а для контроллера

Другие вопросы по тегам