有没有以编程的方式获取Android Q系统颜色强调的方法?

6

正如您所注意到的,Google在Android设置中添加了一种选择系统范围颜色强调的方法:

enter image description here

我最初认为这将无法在我的应用程序中使用,但是Gboard成功地使用它来相应地为UI元素设置主题,正如我们在这篇新闻中看到的那样:https://9to5google.com/2019/05/08/android-q-gboard-accent-color/

我随后想知道这是否是公共API,或者有没有办法从某种方式获取它。

感谢任何建议。

enter image description here


这似乎是新的。它在你的应用程序中也默认更改吗?因为这就像从Android端强制使用coloraccent。 - sanjeev
1个回答

5

您需要使用与AppCompat无关的源主题Theme.DeviceDefault

我测试了以下代码片段,并在Android Q上更改强调颜色时发现它可以很好地工作:

@ColorInt
fun getDeviceAccentColor(context: Context) : Int {
    val value = TypedValue()
    val ctx = ContextThemeWrapper(context, android.R.style.Theme_DeviceDefault)
    ctx.theme.resolveAttribute(android.R.attr.colorAccent, value, true)
    return value.data
}

还有没有一种方法可以使用这种颜色来自定义布局?我认为完全通过编程来实现并不是最好的解决方案。 - Daniel Däschle
我不太确定。如果你在你的应用、活动或布局中设置 android:theme 属性为 Theme.DeviceDefault,那么是可以的。我认为你可能想将其用作个人主题,但 Android 不支持像 CSS 中合并样式那样的操作。 - János Sicz-Mesziár
我没有正确地理解它。Theme.DeviceDefault 在任何地方都不可用。 - Daniel Däschle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接