我正在使用ICS应用程序中的holo.light主题和标准的Switch控件。
我想要将开关按钮的高亮或打开状态颜色从标准的浅蓝色更改为绿色。
这应该很容易,但我似乎无法弄清如何实现。
我正在使用ICS应用程序中的holo.light主题和标准的Switch控件。
我想要将开关按钮的高亮或打开状态颜色从标准的浅蓝色更改为绿色。
这应该很容易,但我似乎无法弄清如何实现。
可能有点晚了,但对于开关按钮来说,切换按钮不是答案,你必须更改开关的xml参数中的可绘制项:
android:thumb="your drawable here"
<style name="SwitchTheme" parent="Theme.AppCompat.Light">
<item name="android:colorControlActivated">#148E13</item>
</style>
2. 在您的布局文件的switch中添加以下代码行:
android:theme="@style/SwitchTheme"
<style name="BaseAppTheme" parent="Material.Theme">
...
<item name="android:colorControlActivated">@color/color_switch</item>
</style>
arlomedia提出的解决方案对我有用。关于他的额外空间问题,我通过将所有填充删除到开关上来解决。
编辑
根据要求,这是我的内容。
在布局文件中,我的开关位于线性布局内,并在TextView之后。
<LinearLayout
android:id="@+id/myLinearLayout"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_gravity="center_horizontal|center"
android:gravity="right"
android:padding="10dp"
android:layout_marginTop="0dp"
android:background="@drawable/bkg_myLinearLayout"
android:layout_marginBottom="0dp">
<TextView
android:id="@+id/myTextForTheSwitch"
android:layout_height="wrap_content"
android:text="@string/TextForTheSwitch"
android:textSize="18sp"
android:layout_centerHorizontal="true"
android:layout_gravity="center_horizontal|center"
android:gravity="right"
android:layout_width="wrap_content"
android:paddingRight="20dp"
android:textColor="@color/text_white" />
<Switch
android:id="@+id/mySwitch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOn="@string/On"
android:textOff="@string/Off"
android:layout_centerHorizontal="true"
android:layout_gravity="center_horizontal"
android:layout_toRightOf="@id/myTextForTheSwitch"
android:layout_alignBaseline="@id/myTextForTheSwitch"
android:gravity="right" />
</LinearLayout>
自从我开始使用Xamarin / Monodroid(最低Android 4.1),我的代码如下:
Android.Graphics.Color colorOn = Android.Graphics.Color.Green;
Android.Graphics.Color colorOff = Android.Graphics.Color.Gray;
Android.Graphics.Color colorDisabled = Android.Graphics.Color.Green;
StateListDrawable drawable = new StateListDrawable();
drawable.AddState(new int[] { Android.Resource.Attribute.StateChecked }, new ColorDrawable(colorOn));
drawable.AddState(new int[] { -Android.Resource.Attribute.StateEnabled }, new ColorDrawable(colorDisabled));
drawable.AddState(new int[] { }, new ColorDrawable(colorOff));
swtch_EnableEdit.ThumbDrawable = drawable;
swtch_EnableEdit之前是这样定义的(Xamarin):
Switch swtch_EnableEdit = view.FindViewById<Switch>(Resource.Id.mySwitch);
android:trackTint="@drawable/toggle_style"
android:trackTintMode="src_over"
toggle_style.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/informationDefault"
android:state_checked="true"
/>
<item android:color="@color/textDisabled" android:state_checked="false"/>
</selector>
您可以为开关小部件制作自定义样式,当对其进行自定义样式时,可以使用颜色强调作为默认值。
<style name="switchStyle" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorPrimary</item> <!-- set your color -->
</style>
我不知道如何从Java中实现,但如果您为应用程序定义了样式,您可以在样式中添加此行代码,这样您就可以获得所需的颜色,对于我来说,我使用了#3F51B5。
<color name="ascentColor">#3F51B5</color>
在这里尝试找到正确的答案:TextView背景颜色选择器。 用XML创建一个带有颜色的形状,然后将其分配给你选择器中的"checked"状态。
Switch
指向这个自定义选择器。 - MH.