如何设置MediaRouter对话框的标题?

时间:2016-01-26 16:26:17

标签: android dialog mediarouter

我正在使用mediarouter-v7 v23.1.1来显示chromecast / media路由器选择器对话框。现在我尝试设置这个样式 - 我可以用这个来改变背景颜色和列表项文本样式:

<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对话框的实现,看看它们是否做了什么花哨的事情(比如隐藏窗口并添加自定义元素作为标题),但他们没有,他们只是在{{1}上调用setTitle(...)实例。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

不幸的是,对话框并不遵循标准主题(Android中的Dialogs一般都非常不友好,但其中一个是最难处理的)。由于该对话框由媒体路由器提供,因此如果您使用自己的对话框完全替换该对话框,则只能提供自定义主题。

您可以尝试继承MediaRouteDialogFactory并覆盖onCreateChooserDialogFragment()方法并将您的实现传递给ActionProvide:

mediaRouteActionProvider.setDialogFactory(yourDialogFactoryImlementation)

你可以看一下CCL我做类似的事情,不是选择对话框而是控制器