2016-04-28 6 views
4

「デザインライブラリでTheme.AppCompatテーマ(または子孫)を使用する必要があります」というエラーが毎回発生します私が明らかにAppCompat Theme(子孫のテーマ)を使用している場合。"デザインライブラリでTheme.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> 

私はサービス内のレイアウトを膨らませるよ:

tooltipContainer = (CoordinatorLayout) LayoutInflater.from(this).inflate(R.layout.tooltip_layout, null); 

答えて

19

カスタムテーマとServiceContextをラップ、そしてからLayoutInflaterを取得するためにContextThemeWrapperを作成します。それ。 ContextThemeWrapper

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

あなたは、コンストラクタで指定したものに与えられたContextのテーマを変更します。 Serviceには実際にテーマがありませんので、ServiceContextにあなたの名前をつけてから、LayoutInflaterに適切なテーマを設定して、Viewを膨らませます。