【问题标题】:Different colorControlActivated styles in AndroidAndroid中不同的colorControlActivated样式
【发布时间】:2015-05-27 21:30:21
【问题描述】:

这是我的应用主题:

<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 吗?

谢谢。

【问题讨论】:

  • 阅读 Chris Banes 在Theme vs Style 上的文章,了解为什么这不起作用以及如何达到预期的效果。
  • 好文章,我按照 Chris 的例子,用“android:theme”替换了“style”,但还是不行:/
  • 嗨@GuilhE,你有没有解决这个问题?我现在在同一个地方
  • 嗨@Nemesis 不,最终使用了这个:github.com/rey5137/Material/wiki/Switch
  • 好吧,让它工作,我在这里发布了一个答案,以防它帮助任何人:)

标签: android android-5.0-lollipop android-styles android-appcompat


【解决方案1】:

主要问题是活动主题中的属性 colorControlActivated 优先于您定义并应用于特定视图的任何自定义样式中的该属性。

解决方案是(并且此解决方案以相同的方式覆盖同一活动中所有元素的属性)创建一个新主题并将该主题应用于清单中的活动。这个主题可以继承你的主主题,并且只覆盖你需要的属性。

主题:

<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

【讨论】:

    猜你喜欢
    • 2019-11-06
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 2015-12-06
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多