![](/img/trans.png)
[英]How to maintain the same theme in Android java app ? in both dark and light mode of android mobile
[英]Use both light and dark checkboxes in same app
我正在使用自定義主題,其父主題是Light.DarkActionBar
<style name="MyTheme" parent="Theme.AppCompat.Light.DarkActionBar">
如預期和預期的那樣,這會在白色背景上產生深色的CheckBox(文本和復選框可繪制)。
我可以將深色主題用於反色:
<style name="MyTheme" parent="Theme.AppCompat">
再次,這按預期方式工作(輕巧的CheckBox文本和圖形)。
該應用程序將前者用於淺色背景上的深色復選框,但是一個特定的UI(片段)在深色背景上具有CheckBoxes,所以我想僅將這些特定CheckBox的顏色翻轉(變淺)。
我可以使用textColor
為標簽着色,但是CheckBox輪廓仍然顯示為深色。
我可以在API 21+(L)中使用使用着色,但是我需要支持低至16(使用AppCompat)的API。
我也嘗試過setColorFilter
,但是它還沒有工作(沒有任何日志就會崩潰-我正在繼續調查),但是我對這種方法不抱希望,因為我希望圖形表現得“自然” ,例如,在檢查的過渡期間切換強調色。
我不想使用自定義圖形,因為我希望圖形由系統提供並為用戶所熟悉,並與同一系統上的其他應用程序匹配。
我嘗試直接在CheckBox上設置各種樣式,但根本沒有任何視覺更改:
<?xml version="1.0" encoding="utf-8"?>
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/ThemeOverlay.AppCompat.Dark"
...
風格的價值似乎沒有任何可見的影響。
那么,如何使這些特定的CheckBox獲得系統提供的淺色CheckBox圖形,而應用程序中的其他CheckBox卻繼續變暗?
TYIA
View
基於膨脹的Context
進行主題化。
在深色背景上實現深色復選框的一種方法是,將使用深色主題創建的ContextThemeWrapper
視圖層次結構的整個深色部分。
ContextThemeWrapper darkContext = new ContextThemeWrapper(
context, R.style.MyThemeDark);
LayoutInflater darkInflater = LayoutInflater.from(darkContext);
View myDarkLayout = darkInflater.inflate(
R.layout.some_layout, parentView, true);
在API 21+上,您可以使用android:theme
屬性實現此效果。
some_layout.xml:
<LinearLayout
android:id="@+id/my_dark_layout"
android:theme="@style/MyDarkTheme"
...>
<CheckBox ... />
</LinearLayout>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.