2017-09-16 142 views
-3

我的应用程序不使用AppCompat,因为我的minSdkVersion15。我想用它smart-app-rate library但我正在逐渐(预计):如何在AppCompat中使用AppCompat库?

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 

请注意,我无法将应用程序切换到程序兼容性,因为A)有没有真正的需要和B)如果我这样做,我的应用程序看起来完全不同,它应该。

所以,我试图下载库为ZIP并将其转换为不使用AppCompat。我做了this answer中提到的步骤,但现在我得到了一大堆错误(如ContextCompat.getColor,我需要用非AppCompat函数替换),我不确定这是否是正确的方法。

我该如何轻松解决这个问题?

+0

没有“如果你的最小SDK比X大,那么你不应该使用AppCompat”语句。建议使用支持库(尤其是如果您的min SDK在API中有大的中断时<21),因为支持组件提供了与元素进行交互的统一接口,而无需开发人员检查某些API级别要求。此外,如果将'Theme.AppCompat'定义为您当前应用程序主题的父级样式,则会改变外观,这可能与您当前的方法有所不同。 –

+0

@GergelyKőrössy,谢谢;显然我错过了一些知识并需要阅读。当我将应用更改为使用AppCompat时,[这是区别](https://i.imgur.com/aLCVaMJ.jpg)。它看起来真的很糟糕,甚至滑块都丢失了。你有什么建议,我应该看看我的代码更进一步吗? –

+0

那些是什么样的组件? appbar文字颜色可以通过使用'Theme.AppCompat.Light.DarkActionBar'作为你的父母来解决。 –

回答

1

,但现在我得到了一大堆的错误(如ContextCompat.getColor,我需要与非程序兼容性功能来代替)

ContextCompat无关与appcompat-v7ContextCompat来自support-compat,我强烈建议使用support-compat工件。

我不确定这是否是正确的方法。

你可以根本不使用库。否则,您别无选择,只能交叉移除它以用于appcompat-v7

+0

感谢您的阐述。我决定将我的应用转换为使用AppCompat,因为我非常喜欢这个库。 –

相关问题