【问题标题】:How to use AppCompat library in my app which is not AppCompat?如何在我的应用程序中使用不是 AppCompat 的 AppCompat 库?
【发布时间】:2018-02-25 16:50:23
【问题描述】:

我的应用不使用 AppCompat,因为我的 minSdkVersion15。我想在其中使用smart-app-rate library,但我得到了(这是预期的):

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

请注意,我无法将我的应用更改为 AppCompat,因为 A) 没有真正的需要,并且 B) 如果我这样做,我的应用看起来与它应该的完全不同。

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

如何轻松解决这个问题?

【问题讨论】:

  • 没有“如果你的 min SDK 大于 X 那么你不应该使用 AppCompat”的声明。建议使用支持库(特别是如果您的最小 SDK 小于 21,因为 API 有很大的中断),因为支持组件提供了与元素交互的统一接口,而开发人员无需检查某些 API 级别的要求。此外,如果将 Theme.AppCompat 定义为当前应用主题的父样式会大幅修改外观,那么您当前的方法可能有问题。
  • @GergelyKőrössy,谢谢;显然我缺少一些知识,需要阅读。当我将我的应用程序更改为使用 AppCompat 时,this is the difference。它看起来真的很糟糕,甚至滑块都不见了。你有什么提示我应该在我的代码中进一步查看吗?
  • 那些是什么组件?可以使用Theme.AppCompat.Light.DarkActionBar作为您的父级来修复应用栏文本颜色。
  • 文本颜色已修复,谢谢。 (现在)缺少的组件实际上是 SeekBars,旋转 270。
  • 这似乎是一个按钮,因为默认情况下它具有全部大写文本。您应该发布一个新问题或使用包含的 XML 布局对其进行编辑,因为这样调试是不可能的。

标签: android android-appcompat android-library


【解决方案1】:

但现在我收到一大堆错误(例如 ContextCompat.getColor,我需要用非 AppCompat 函数替换它)

ContextCompatappcompat-v7 无关。 ContextCompat 来自support-compat,我强烈推荐使用support-compat 神器。

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

您根本无法使用该库。否则,您别无选择,只能跨端口删除它对 appcompat-v7 的使用。

【讨论】:

  • 感谢您的详细说明。我决定将我的应用程序转换为使用AppCompat,因为我真的很喜欢这个库。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 1970-01-01
  • 1970-01-01
  • 2016-05-05
相关资源
最近更新 更多