![](/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.