“You need to use a Theme.AppCompat theme (or descendant) with the design library” error

匿名 (未验证) 提交于 2019-12-03 03:10:03

问题:

I'm getting "You need to use a Theme.AppCompat theme (or descendant) with the design library" error every time even if I'm obviously using an AppCompat Theme (a descendant one).

dependencies:

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'

layout:

               

theme:

manifest:

                      (...) 

I'm inflating the layout inside a service:

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

回答1:

Create a ContextThemeWrapper to wrap the Service's Context with your custom theme, and get the LayoutInflater from that.

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

The ContextThemeWrapper modifies the given Context's theme with the one you specify in the constructor. Since a Service doesn't really have a theme, it just tacks yours onto the Service's Context, then the LayoutInflater has the appropriate theme to inflate the design Views.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!