在我的Android应用中。有些屏幕是“黑暗的”#34;主题。所以我需要对它们应用不同的colorAccent
colorPrimary
colorDark
。
每篇文章 - https://plus.google.com/+AndroidDevelopers/posts/JXHKyhsWHAH - 我们可以设置android:theme
,而后代则会设置此内容。
所以我在我的styles.xml
中创建了多个主题,现在我尝试根据此解决方案将其应用于不同的View
或TextInput
- https://stackoverflow.com/a/49172034/1828637
在我的styles.xml
中,我创建了两个不同的主题,一个用于暗屏幕,另一个用于光幕:
<style name="EditTextTheme1" parent="ThemeOverlay.AppCompat.Light">
<item name="colorPrimary">@color/cardview_dark_background</item>
<item name="colorPrimaryDark">@color/colorPrimary</item>
<item name="colorAccent">@color/colorAccent1</item>
</style>
<style name="SecondTheme" parent="ThemeOverlay.AppCompat.Dark">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorAccent</item>
<item name="colorAccent">@color/colorAccent2</item>
</style>
我的目标是现在在黑屏上执行此操作
<TextInput android:theme="EditTextTheme1" />
然后在光幕上我想这样做:
<TextInput android:theme="SecondTheme" />
或者通过View
这样申请:
<View android:theme="EditTextTheme1">
<TextInput />
</View>
<View android:theme="SecondTheme">
<TextInput />
</View>
我无法弄清楚如何申请android:theme
。我甚至尝试修改本机代码 - Modifying ReactEditText.java is not taking affect。似乎View
和TextInput
等没有此android:theme
道具。有没有人知道是否有办法将android:theme
应用于View
,以便其子级采用此自定义主题?
我发现最接近的是我在ThemeAttrAndroid
- https://github.com/facebook/react-native/blob/b7bb2e5745f2bdbfeeccef8d97d469730942e01c/Libraries/Components/Touchable/TouchableNativeFeedback.android.js#L108找到了TouchableNativeFeedback
属性 - 但我无法弄清楚如何使用它来设计后代的风格。我觉得我非常接近。