获取 Android 系统强调色(Android 10 系统强调色)

Get Android system accent color (Android 10 System color accent)

这个问题应该很简单,但我没有找到答案。我有一个带有 select 可用口音的应用程序,我正在尝试添加一个选项以使用 android 系统口音(像 Lawnchair 这样的应用程序有这样的选项)。在系统重音的样式中,我尝试以各种可能的方式获得此重音:

?android:colorAccent

?android:attr/colorAccent

?attr/colorAccent

这是风格:

<style name="AppTheme.systemAccent" parent="AppTheme">
    <item name="colorAccent">???</item>
</style>

似乎没有任何效果,应用程序崩溃了,但我确信这是可能的。当我使用普通颜色时,重音 selection 效果很好。我哪里错了?

编辑:为了清楚起见,我正在尝试获取系统强调色,即在设置、通知面板等中使用的系统范围颜色。这种颜色现在 select 可以在 Android 10 中使用,并且以前 select 可以像氧气 OS 一样在 rom 中使用。假设我 select 在我的 Android 10 设备 的设置-> 自定义中有一个红色调。我想在我的应用程序中加入这种红色口音

您可以通过编程方式获取它:

TypedValue typedValue = new TypedValue();
ContextThemeWrapper contextThemeWrapper = new ContextThemeWrapper(this,
     android.R.style.Theme_DeviceDefault);
contextThemeWrapper.getTheme().resolveAttribute(android.R.attr.colorAccent,
     typedValue, true);
int color = typedValue.data; 

澄清一下,我指的是 Android Q 系统颜色重点:

@color/colorAccent 使用它,它是 android 中的默认颜色 或者您可以在 color.xml

中自定义您的颜色

好的。我做了一些深入的研究和反复试验。之后我发现,我可以访问私有 属性 @*android:color/accent_device_default_light但是 如果您将 activity 的父级 class 从 AppCompatActivity 更改为 Activity,这是可能的,因为 AppCompat 不能使用此私有 属性 设置工具栏。此外,不建议使用私有属性,因为它们将来可能会被删除或更改。