Android 中的不同 colorControlActivated 样式
Different colorControlActivated styles in Android
这是我的应用主题:
<style name="BaseTheme" parent="Theme.AppCompat.Light">
...
<item name="colorControlActivated">@color/default_orange</item>
...
</style>
...
<style name="Switch" parent="Material.Widget.Switch">
<item name="colorControlActivated">@color/default_green</item>
</style>
如果我使用 Switch 样式:
<com.rey.material.widget.Switch
style="@style/Switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"/>
colorControlActivated
使用的是 BaseTheme 中的那个(橙色)而不是 Switch 中的那个(绿色)。
为什么会这样?我不能为不同的视图设置不同的 colorControlActivated
吗?
谢谢。
主要问题是 activity 主题中的 colorControlActivated 属性优先于您定义并应用于特定视图的任何自定义样式中的该属性.
解决方案是(并且此解决方案以相同的方式覆盖同一 activity 中所有元素的属性)创建一个新主题并将该主题应用到清单中的 activity .该主题可以继承自您的主主题并仅覆盖您需要的属性。
主题:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- items-->
<item name="colorControlActivated">@android:color/white</item>
<!-- items-->
</style>
<style name="lightAppTheme" parent="AppTheme" >
<item name="colorControlActivated">@color/colorPrimary</item>
</style>
清单:
<application
android:name=".application.appname"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main"
android:theme="@style/lightAppTheme"
android:screenOrientation="portrait"></activity>
</application>
我希望这对参与其中的任何人有所帮助,因为我花了几个小时才开始工作。
为了让同一个activity中的不同元素使用不同的colorControlActivated属性,转到这个answer.
这是我的应用主题:
<style name="BaseTheme" parent="Theme.AppCompat.Light">
...
<item name="colorControlActivated">@color/default_orange</item>
...
</style>
...
<style name="Switch" parent="Material.Widget.Switch">
<item name="colorControlActivated">@color/default_green</item>
</style>
如果我使用 Switch 样式:
<com.rey.material.widget.Switch
style="@style/Switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"/>
colorControlActivated
使用的是 BaseTheme 中的那个(橙色)而不是 Switch 中的那个(绿色)。
为什么会这样?我不能为不同的视图设置不同的 colorControlActivated
吗?
谢谢。
主要问题是 activity 主题中的 colorControlActivated 属性优先于您定义并应用于特定视图的任何自定义样式中的该属性.
解决方案是(并且此解决方案以相同的方式覆盖同一 activity 中所有元素的属性)创建一个新主题并将该主题应用到清单中的 activity .该主题可以继承自您的主主题并仅覆盖您需要的属性。
主题:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- items-->
<item name="colorControlActivated">@android:color/white</item>
<!-- items-->
</style>
<style name="lightAppTheme" parent="AppTheme" >
<item name="colorControlActivated">@color/colorPrimary</item>
</style>
清单:
<application
android:name=".application.appname"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main"
android:theme="@style/lightAppTheme"
android:screenOrientation="portrait"></activity>
</application>
我希望这对参与其中的任何人有所帮助,因为我花了几个小时才开始工作。
为了让同一个activity中的不同元素使用不同的colorControlActivated属性,转到这个answer.