1

我的活动的操作栏(v7.Toolbar)中有一个 SwitchCompat。我希望它在关闭时为 colorStructure,在打开时为 colorAccent。它在棒棒糖之前运行良好,但在棒棒糖上,激活的开关以我没有在任何地方定义的颜色绘制。它看起来像“material_deep_teal_200”。那是我唯一的风格定义:

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<style name="Theme.Default" parent="Theme.AppCompat.Light.NoActionBar">
		<item name="colorPrimary">@color/colorPrimary</item>
		<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
		<item name="colorAccent">@color/colorAccent</item>
		<!--<item name="android:windowNoTitle">true</item>-->
		<item name="windowActionBar">false</item>
		<item name="colorSwitchThumbNormal">@color/colorStructure</item>
		<item name="colorControlNormal">@color/colorPrimary</item>
		<item name="colorControlActivated">@color/colorAccent</item>
		<item name="colorControlHighlight">@color/colorAccent</item>
		<!--<item name="selectBarStyle">@style/DefaultSelectBar</item>-->
	</style>
</resources>

这就是活动 xml 的开始:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              xmlns:app="http://schemas.android.com/apk/res-auto"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical"
	>

	<android.support.v7.widget.Toolbar
		android:id="@+id/toolbar"
		android:layout_height="wrap_content"
		android:layout_width="match_parent"
		app:theme="@style/Widget.AppCompat.Toolbar"
		app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
		android:background="@color/colorPrimary"
		android:paddingRight="@dimen/abc_dropdownitem_text_padding_right">

		<FrameLayout
			android:layout_width="match_parent"
			android:layout_height="wrap_content"
			android:paddingRight="@dimen/abc_action_bar_icon_vertical_padding_material">

			<ImageButton
				android:layout_width="wrap_content"
				android:layout_height="wrap_content"
				android:id="@+id/helpButton"
				android:src="@drawable/ic_help_large"
				android:background="#00000000"
				android:layout_gravity="center"/>

			<android.support.v7.widget.SwitchCompat
				android:layout_width="wrap_content"
				android:layout_height="wrap_content"
				android:id="@+id/master_switch"
				android:clickable="true"
				android:checked="true"
				android:gravity="center"
				android:layout_gravity="right"
				/>

		</FrameLayout>

		</android.support.v7.widget.Toolbar>

那么我需要更改什么才能使开关在 KitKat 和 Lollipop 上具有相同的自定义颜色?

谢谢

4

1 回答 1

0

实际上,上面介绍的代码可以正常工作 - 在 Lollipop 上也是如此。清理有问题的代码后,我一定是在验证过程中犯了一个错误。

最初的问题是当我在 values-v21 中也有配置时。我假设有一个错字或类似的东西在我将所有内容简化为默认的 xml 文件时丢失了。

简而言之,所提供的代码有效,我假设在 values-v21 中进行配置也不会导致问题。

于 2015-01-19T09:48:47.573 回答