- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在自定义 MediaRouteChooser/MediaRouteController 对话框时遇到问题(我需要不同的布局,一些额外的操作)。
转换按钮是通过调用来设置的CastButtonFactory.setUpMediaRouteButton(getApplicationContext(), menu, R.id.media_route_menu_item);
在 onCreateOptionsMenu
中。
我发现我需要扩展 MediaRouteDialogFactory
并返回我自己的 MediaRouteChooserDialogFragment
并覆盖 onCreateChooserDialog
并返回我的自定义对话。然而,这需要是一个 MediaRouteChooserDialog
但扩展它没有多大意义(您需要复制所有代码,因为一切都是私有(private)的,您不能使用它们,例如 mRouter
, mCallback
).
我的问题是,我怎样才能显示自己的对话框和自己列出的路由,同时将 CastButtonFactory.setUpMediaRouteButton
解决方案保留在 onCreateOptionsMenu
中?我真的不想理会 chromecast 按钮状态,如可见性、连接状态、决定是否需要显示路由选择器或路由 Controller 等。我什至不确定我应该如何列出路由/管理发现,所以在该主题上也能提供一点帮助。
最佳答案
我自己解决了这个问题,对我来说效果很好。这是我所做的简而言之,也许它提供了一些想法。
我创建了一个 CustomMediaRouteDialogFactory
,它扩展了 MediaRouteDialogFactory
并通过覆盖 onCreateChooserDialogFragment
和 onCreateControllerDialogFragment
提供了我自己的对话框>。这些对话框扩展了框架中的原始选择器和 Controller 对话框。
工具栏内转换按钮的状态仍然是自动管理的,我只是将自己的路由选择器和对话框工厂传递给提供者。
onCreateOptionsMenu:
MenuItem mediaRouteMenuItem = menu.findItem(R.id.media_route_menu_item);
MediaRouteActionProvider mediaRouteActionProvider = (MediaRouteActionProvider) MenuItemCompat.getActionProvider(mediaRouteMenuItem);
mediaRouteActionProvider.setRouteSelector(chromecastManager.getMediaRouteSelector());
mediaRouteActionProvider.setDialogFactory(mediaRouteDialogFactory);
缺点:通过查看框架的选择器对话框实现和一些其他依赖项的源代码,我最终编写了自己的路由发现和过滤代码。其次, Controller 对话框直接与 RemoteMediaClient 通信。
这样我可以完全定制,但需要一些额外的工作。
关于android - Chromecast 自定义 MediaRouteChooserDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50782464/
我在自定义 MediaRouteChooser/MediaRouteController 对话框时遇到问题(我需要不同的布局,一些额外的操作)。 转换按钮是通过调用来设置的CastButtonFact
我是一名优秀的程序员,十分优秀!