我使用mediarouter-v7 v23.1.1显示一个chromecast /媒体路由器选择器对话框。现在,我尝试对这个东西进行样式化--而我可以用以下方式更改背景色和列表项目文本样式:
<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 )主题,但它不是。我还查看了中介对话框的实现,看看它们是否做了什么花哨的事情(比如隐藏窗口并添加一个自定义元素作为它们的标题),但是它们没有,它们只是在Dialog实例上调用Dialog。
我做错了什么?
发布于 2016-02-05 12:55:43
不幸的是,该对话框没有遵循标准主题( Android中的对话框一般都很不友好,但这是最难使用的对话框之一)。因为该对话框是由媒体路由器提供的,所以只有当您用自己的对话框完全替换该对话框时,您才能提供自定义的主题。
您可以尝试子类化MediaRouteDialogFactory和重写onCreateChooserDialogFragment()方法,并将实现传递给ActionProvide:
mediaRouteActionProvider.setDialogFactory(yourDialogFactoryImlementation)
您可以查看一下CCL,在这里,我做了一件类似的事情,不是针对选择器对话框,而是针对控制器。
https://stackoverflow.com/questions/35018748
复制相似问题