我正在使用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(...)
实例。
我做错了什么?
答案 0 :(得分:1)
不幸的是,对话框并不遵循标准主题(Android中的Dialogs一般都非常不友好,但其中一个是最难处理的)。由于该对话框由媒体路由器提供,因此如果您使用自己的对话框完全替换该对话框,则只能提供自定义主题。
您可以尝试继承MediaRouteDialogFactory并覆盖onCreateChooserDialogFragment()方法并将您的实现传递给ActionProvide:
mediaRouteActionProvider.setDialogFactory(yourDialogFactoryImlementation)
你可以看一下CCL我做类似的事情,不是选择对话框而是控制器