我正在嘗試為我的應用程式創建一個更易于訪問的高對比度模式。
我目前的設定如下:
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar.Bridge">
<item name="colorPrimary">@color/primary_color</item>
<item name="colorPrimaryDark">@color/primary_color_dark</item>
<item name="colorAccent">@color/primary_color</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowBackground">@color/background_fixed</item>
<item name="listPopupWindowStyle">@style/ListPopupWindow</item>
</style>
在colors.xml 檔案中,我存盤了我在整個應用程式中使用的所有顏色。
如果用戶勾選“輔助功能模式”,則colors.xml 中的所有顏色都需要稍微更改。我想出的解決方案是,我可以創建原始 color.xml 檔案的副本,但使用原始顏色的高對比度版本,當用戶勾選可訪問性切換時,它將以編程方式切換到“accessibility_colors.xml”。 xml”檔案(其中顏色將與原始名稱相同,但具有不同的值)
我做了一些研究,但找不到任何關于此的資訊。這可能嗎?如果沒有 - 對此的可行解決方案是什么?
uj5u.com熱心網友回復:
顏色資源 ID 是在編譯期間生成的。因此,如果您有一個默認的 color.xml 檔案和另一個用于的,比如說“夜間主題”,您將無法在運行時以編程方式執行此操作。
對此的一種可能的解決方案是以編程方式創建“無障礙模式”所需的顏色(代碼中的十六進制代碼)。
例如:
fun getPrimaryColor(isAccessibilityMode): Int {
return if(isAccessibilityMode) {
Color.parseColor("#bdbdbd");
} else {
Color.parseColor("#efefef"); // completely random colors here :)
}
}
您必須覆寫通常在主題樣式中設定的視圖默認顏色。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/369550.html
