Как я могу стилизовать заголовок диалога 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, где я делаю похожую вещь не для диалога выбора, а для контроллера