我想通过引用设置参数。就我而言,它是由 custom app 切换的颜色Theme
。问题是在我的代码中的一个地方它正在抛出UnsupportedOperationException
,但在其他地方它工作正常。我在 50 个不同的地方使用它,但只是在这个布局中,它不起作用。可能的问题是它的布局被LayoutInflater
.
attr.xml
这是我在->中的颜色名称
<attr name="bgColor" format="reference"/>
styles.xml
这是我的自定义内部的用法Theme
:
<style name="AppThemeBlueDark" parent="Theme.MaterialComponents.Light.NoActionBar.Bridge">
...
<item name="bgColor">@color/darkred</item>
...
</style>
以下是 XML 布局中此引用颜色的用法:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="52dp"
android:gravity="center"
android:background="?attr/bgColor">
...
Other Views
...
</LinearLayout>
例外:
Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 13: TypedValue{t=0x2/d=0x7f030051 a=-1}
at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:946)
at android.content.res.TypedArray.getDrawable(TypedArray.java:930)
at android.view.View.<init>(View.java:5012)
at android.view.ViewGroup.<init>(ViewGroup.java:660)
at android.widget.LinearLayout.<init>(LinearLayout.java:244)
at android.widget.LinearLayout.<init>(LinearLayout.java:240)
at android.widget.LinearLayout.<init>(LinearLayout.java:236)