gpt4 book ai didi

android - 为什么我得到 java.lang.IllegalArgumentException : background can not be translucent: #0 when using MediaRouteButton?

转载 作者:数据小太阳 更新时间:2023-10-29 02:38:47 26 4
gpt4 key购买 nike

我正在尝试将我的应用转换到 Chromecast。我开始在 https://developers.google.com/cast/docs/android_sender_integrate 之后添加一个按钮指导。

添加 MediaRouteButton 后,我得到:

Caused by: java.lang.IllegalArgumentException: background can not be translucent: #0
at android.support.v4.graphics.ColorUtils.calculateContrast(ColorUtils.java:93)
at android.support.v7.app.MediaRouterThemeHelper.getControllerColor(MediaRouterThemeHelper.java:88)
at android.support.v7.app.MediaRouterThemeHelper.getStyledRouterThemeId(MediaRouterThemeHelper.java:185)
at android.support.v7.app.MediaRouterThemeHelper.createThemedContext(MediaRouterThemeHelper.java:60)
at android.support.v7.app.MediaRouteButton.<init>(MediaRouteButton.java:124)
at android.support.v7.app.MediaRouteButton.<init>(MediaRouteButton.java:120)
at java.lang.reflect.Constructor.newInstance(Native Method) 
at android.view.LayoutInflater.createView(LayoutInflater.java:619) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:408) 
at android.app.Activity.setContentView(Activity.java:2198) 

我搜索了 SO,发现了另一个类似的问题,评论者要求将背景标记添加到 MediaRouteButton 的 xml 条目。这是我的布局 xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mdb_reader"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<LinearLayout
android:id="@+id/mdb_book_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

<android.support.v7.app.MediaRouteButton
android:id="@+id/media_route_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/black"
android:layout_weight="1"
android:mediaRouteTypes="user"
android:visibility="gone" />

</LinearLayout>

</FrameLayout>

(我嵌套了两个布局,因为它是以编程方式使用的,无论如何我已经尝试将 MediaRouteButton 移得更高但没有帮助)。

我还看到了一些关于主题的提示,这是我的 AndroidManifest.xml application 条目:

<application
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:background="@android:color/black"
android:theme="@style/AppTheme">

vales/styles.xml

<resources>
<style name="AppBaseTheme" parent="@style/Theme.AppCompat">
</style>

<style name="AppTheme" parent="AppBaseTheme">
</style>

<style name="Theme.CastVideosTheme" parent="AppBaseTheme">
<item name="mediaRouteTheme">@style/CustomMediaRouterTheme</item>
</style>

<style name="CustomMediaRouterTheme" parent="Theme.MediaRouter">
<item name="mediaRouteButtonStyle">@style/CustomMediaRouteButtonStyle</item>
</style>

<style name="CustomMediaRouteButtonStyle" parent="Widget.MediaRouter.Light.MediaRouteButton">
<item name="buttonTint">@color/black</item>
</style>
</resources>

values-v11/styles.xml

<resources>
<style name="AppBaseTheme" parent="@style/Theme.AppCompat">
</style>
<style name="Theme.CastVideosTheme" parent="AppBaseTheme">
<item name="mediaRouteTheme">@style/CustomMediaRouterTheme</item>
</style>

<style name="CustomMediaRouterTheme" parent="Theme.MediaRouter">
<item name="mediaRouteButtonStyle">@style/CustomMediaRouteButtonStyle</item>
</style>

<style name="CustomMediaRouteButtonStyle" parent="Widget.MediaRouter.Light.MediaRouteButton">
<item name="buttonTint">@color/black</item>
</style>
</resources>

values-v14

<resources>
<style name="AppBaseTheme" parent="@style/Theme.AppCompat">
</style>
<style name="Theme.CastVideosTheme" parent="AppBaseTheme">
<item name="mediaRouteTheme">@style/CustomMediaRouterTheme</item>
</style>

<style name="CustomMediaRouterTheme" parent="Theme.MediaRouter">
<item name="mediaRouteButtonStyle">@style/CustomMediaRouteButtonStyle</item>
</style>

<style name="CustomMediaRouteButtonStyle" parent="Widget.MediaRouter.Light.MediaRouteButton">
<item name="buttonTint">@color/black</item>
</style>
</resources>

在我看来一切正常,但我仍然遇到该死的错误。

我正在使用 Android 26 进行构建。

最佳答案

如果您直接实例化 MediaRouteChooserDialog(又名。为 chromecast 做更多的自定义实现),并且您不想使用 AppCompat 主题派生作为您的应用程序主题,您可以这样做:

MediaRouteChooserDialog builder = new MediaRouteChooserDialog(context, R.style.Theme_AppCompat_NoActionBar);

这会传入默认的 AppCompat.NoActionBar 主题供对话框使用。您可以传递任何您想要的主题,只要它是 AppCompat 的后代即可。

至少适用于 androidx、v7-28 和 v7-28 支持库。不确定旧版本。

关于android - 为什么我得到 java.lang.IllegalArgumentException : background can not be translucent: #0 when using MediaRouteButton?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46811254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com