这个问题应该很简单,但我没有找到答案。我有一个带有可选口音的应用程序,我正在尝试添加一个选项来使用 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 设备上的设置 -> 自定义中选择了红色强调。我想在我的应用程序中得到这个红色口音
您可以通过编程方式获取它:
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 系统颜色强调:
好的。我做了一些深入的研究和反复试验。之后我发现,我可以访问私人财产
@*android:color/accent_device_default_light
。 但是,如果您将活动的父类从 AppCompatActivity
更改为 Activity
,这是可能的,因为 AppCompat 无法使用此私有属性设置工具栏。此外,不建议使用私有属性,因为它们将来可能会被删除或更改。
您可以使用SetEdit(或类似的应用程序)来枚举它。在安全表下查找
sysui_type_accent_color
键。如果我没记错的话,您也可以通过 adb shell
通过 busybox content
以编程方式执行此操作。
@color/colorAccent 使用这个,它是android中的默认颜色 或者您可以在 color.xml 中自定义颜色