Android &引用;您需要将Theme.AppCompat主题(或子代)与设计库“一起使用”;错误

Android &引用;您需要将Theme.AppCompat主题(或子代)与设计库“一起使用”;错误,android,layout,styles,android-appcompat,Android,Layout,Styles,Android Appcompat,我每次都会收到“您需要在设计库中使用Theme.AppCompat主题(或子代)”错误,即使我显然在使用AppCompat主题(子代主题) 依赖关系: compile 'com.android.support:appcompat-v7:23.3.0' compile 'com.android.support:design:23.3.0' compile 'com.android.support:support-v4:23.3.0' <?xml version="1.0" encoding

我每次都会收到“您需要在设计库中使用Theme.AppCompat主题(或子代)”错误,即使我显然在使用AppCompat主题(子代主题)

依赖关系:

compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:design:23.3.0'
compile 'com.android.support:support-v4:23.3.0'
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/tooltip_container"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:visibility="gone">

    <ImageView
        android:id="@+id/tooltip_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"/>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab_delete_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_anchor="@id/tooltip_image"
        app:layout_anchorGravity="top|end"/>

</android.support.design.widget.CoordinatorLayout>
<style name="TranslucentAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:backgroundDimEnabled">false</item>
</style>
<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/TranslucentAppTheme">
        <activity android:name=".MainActivity">
            (...)
</activity>
布局:

compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:design:23.3.0'
compile 'com.android.support:support-v4:23.3.0'
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/tooltip_container"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:visibility="gone">

    <ImageView
        android:id="@+id/tooltip_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"/>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab_delete_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_anchor="@id/tooltip_image"
        app:layout_anchorGravity="top|end"/>

</android.support.design.widget.CoordinatorLayout>
<style name="TranslucentAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:backgroundDimEnabled">false</item>
</style>
<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/TranslucentAppTheme">
        <activity android:name=".MainActivity">
            (...)
</activity>

创建一个
contexthemewrapper
以使用自定义主题包装
服务的
上下文
,并从中获取
布局更平坦的

ContextThemeWrapper ctx = new ContextThemeWrapper(this, R.style.TranslucentAppTheme);
tooltipContainer = (CoordinatorLayout) LayoutInflater.from(ctx)
    .inflate(R.layout.tooltip_layout, null);

使用构造函数中指定的主题修改给定的
上下文的主题。由于
服务
没有真正的主题,它只是将您的主题添加到
服务
上下文
,那么
布局工具
有适当的主题来膨胀设计
视图
s。

在logcat中也会收到这样的错误:

“E/ThemeUtils:查看类 TableCircleCustomView是 只能与主题一起使用的AppCompat小部件。AppCompat主题 (或后代)。”

我的应用程序主题是“theme.AppCompat.Light.NoActionBar”

这是我的自定义视图类:

class TableCircleCustomView @JvmOverloads constructor(
    context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : AppCompatTextView(context, attrs, defStyleAttr) {
    ....
}
然后在片段中,我将这个对象添加到RelativeLayout中,如下所示

val viewItem = TableCircleCustomView(context)     
with(RelativeLayout.LayoutParams(objectWidth, objectHeight)) {
  leftMargin = objectPosX
  topMargin = objectPosY
    
  binding.restaurantMap.addView(viewItem, this);
}

有人能帮忙解决吗。我不知道我应该设置什么元素以及如何设置主题((

我认为Mike M solution是正确的解决方案,如果您从服务中得到错误,这就是最初的问题的陈述方式。我认为Yevhen所说的问题不是源于服务。在这种情况下,我将分享我的解决方案

我遇到了相同的错误,指出我需要使用一个Theme.AppCompat主题。在我的例子中,它来自一个包含6个NumberPicker小部件的自定义对话框。每当我打开该对话框时,该错误会发生6次(每个小部件一次)。我的样式最初是这样的:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

@颜色/原色
@颜色/原色暗
@颜色/颜色重音
假的
真的
这就是我为解决这个问题所做的:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="AppTheme.NoActionBar" parent="AppTheme">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

@颜色/原色
@颜色/原色暗
@颜色/颜色重音
假的
真的
请注意,我没有从Theme.AppCompat主题派生AppTheme.NoActionBar