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

问题描述 投票:0回答:4

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

?android:colorAccent

?android:attr/colorAccent

?attr/colorAccent

这就是风格:

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

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

编辑:为了清楚起见,我正在尝试获取系统强调色,即设置、通知面板等中使用的系统范围颜色。这种颜色现在可以在 Android 10 中选择,之前在 ROM 中也可以选择,例如 Oxygen OS。假设我在我的Android 10 设备上的设置 -> 自定义中选择了红色强调。我想在我的应用程序中得到这个红色口音

android android-theme android-styles android-10.0
4个回答
7
投票

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

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 系统颜色强调:


2
投票

好的。我做了一些深入的研究和反复试验。之后我发现,我可以访问私人财产

@*android:color/accent_device_default_light
但是,如果您将活动的父类从
AppCompatActivity
更改为
Activity
,这是可能的,因为 AppCompat 无法使用此私有属性设置工具栏。此外,不建议使用私有属性,因为它们将来可能会被删除或更改。


0
投票

您可以使用SetEdit(或类似的应用程序)来枚举它。在安全表下查找

sysui_type_accent_color
键。如果我没记错的话,您也可以通过
adb shell
通过
busybox content
以编程方式执行此操作。


-1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.