在View上设置`android:theme`(ThemeAttrAndroid?)

时间:2018-03-22 07:32:49

标签: android react-native

在我的Android应用中。有些屏幕是“黑暗的”#34;主题。所以我需要对它们应用不同的colorAccent colorPrimary colorDark

每篇文章 - https://plus.google.com/+AndroidDevelopers/posts/JXHKyhsWHAH - 我们可以设置android:theme,而后代则会设置此内容。

所以我在我的styles.xml中创建了多个主题,现在我尝试根据此解决方案将其应用于不同的ViewTextInput - 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。似乎ViewTextInput等没有此android:theme道具。有没有人知道是否有办法将android:theme应用于View,以便其子级采用此自定义主题?

我发现最接近的是我在ThemeAttrAndroid - https://github.com/facebook/react-native/blob/b7bb2e5745f2bdbfeeccef8d97d469730942e01c/Libraries/Components/Touchable/TouchableNativeFeedback.android.js#L108找到了TouchableNativeFeedback属性 - 但我无法弄清楚如何使用它来设计后代的风格。我觉得我非常接近。

0 个答案:

没有答案