如何更改SwitchCompat的轨道颜色

编程入门 行业动态 更新时间:2024-10-24 20:18:45
本文介绍了如何更改SwitchCompat的轨道颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我使用下面的链接继续改变SwitchCompat的颜色尝试:

如何改变的SwitchCompat

注意低constrast在我的开关:

但改变所有相关的颜色值后SwitchCompat的音轨(亮灰色)保持不变。我不想改变除了颜色的外观。拇指是粉红色的,和我想要的轨道有一定的反差。我错过在我的styles.xml定义值?

我想这些值(随机非白两种颜色):

<样式名称=AppTheme父=Theme.AppCompat.Light.NoActionBar>     <项目名称=colorPrimary> @色/第一< /项目>     <项目名称=colorPrimaryDark> @色/秒< /项目>     <项目名称=colorAccent> @色/第三< /项目>    ...     <项目名称=colorControlActivated> @色/第一< /项目>     <项目名称=colorControlHighlight> @色/第一< /项目>     <项目名称=colorControlNormal> @色/秒< /项目>     <项目名称=colorSwitchThumbNormal> @色/秒< /项目>     <项目名称=colorButtonNormal> @色/秒< /项目> ...>

解决方案

我有同样的probrem并解决它。

<样式名称=AppTheme父=Theme.AppCompat.Light.NoActionBar>    ...    <! - 活动拇指颜色和放大器;活动轨迹的颜色(30%的透明度) - >    <项目名称=colorControlActivated> @色彩/主题< /项目>    < - !不活跃的拇指颜色 - >    <项目名称=colorSwitchThumbNormal> @色/ grey300< /项目>    <! - 不活动轨迹的颜色(30%的透明度) - >    <项目名称=机器人:colorForeground> @色/ grey600< /项目>    ... < /风格>

我读应用程序兼容性code和理解。

android.support.v7.internal.widget.TintManager.java

私人ColorStateList getSwitchTrackColorStateList(){     如果(mSwitchTrackStateList == NULL){         最终诠释[] []状态=新的INT [3] [];         最终诠释[]颜色=新INT [3];         INT I = 0;         //禁用状态         国家[我] =新的INT [] {-​​android.R.attr.state_enabled};         颜色[I] = getThemeAttrColor(android.R.attr.colorForeground,0.1F);         我++;         国家[我] =新的INT [] {android.R.attr.state_checked};         颜色[I] = getThemeAttrColor(R.attr.colorControlActivated,0.3f);         我++;         //默认启用状态         态[I] =新INT [0];         颜色[I] = getThemeAttrColor(android.R.attr.colorForeground,0.3f);         我++;         mSwitchTrackStateList =新ColorStateList(州,颜色);     }     返回mSwitchTrackStateList; }

I've tried using the following link to change the color of a SwitchCompat:

How to change the color of a SwitchCompat

Notice the low constrast in my switch:

But after changing all relevant color values the track (the brighter grey) of the SwitchCompat remains the same. I don't want to change the appearance except the color. The thumb is in pink, and I want the track to have some contrast. Did I miss to define a value in my styles.xml?

I tried these values (random non-white colors):

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/first</item> <item name="colorPrimaryDark">@color/second</item> <item name="colorAccent">@color/third</item> ... <item name="colorControlActivated">@color/first</item> <item name="colorControlHighlight">@color/first</item> <item name="colorControlNormal">@color/second</item> <item name="colorSwitchThumbNormal">@color/second</item> <item name="colorButtonNormal">@color/second</item> ...>

解决方案

I had same probrem and solved it.

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> ... <!-- Active thumb color & Active track color(30% transparency) --> <item name="colorControlActivated">@color/theme</item> <!-- Inactive thumb color --> <item name="colorSwitchThumbNormal">@color/grey300</item> <!-- Inactive track color(30% transparency) --> <item name="android:colorForeground">@color/grey600</item> ... </style>

I read app compat code, and understand it.

android.support.v7.internal.widget.TintManager.java

private ColorStateList getSwitchTrackColorStateList() { if (mSwitchTrackStateList == null) { final int[][] states = new int[3][]; final int[] colors = new int[3]; int i = 0; // Disabled state states[i] = new int[] { -android.R.attr.state_enabled }; colors[i] = getThemeAttrColor(android.R.attr.colorForeground, 0.1f); i++; states[i] = new int[] { android.R.attr.state_checked }; colors[i] = getThemeAttrColor(R.attr.colorControlActivated, 0.3f); i++; // Default enabled state states[i] = new int[0]; colors[i] = getThemeAttrColor(android.R.attr.colorForeground, 0.3f); i++; mSwitchTrackStateList = new ColorStateList(states, colors); } return mSwitchTrackStateList; }

更多推荐

如何更改SwitchCompat的轨道颜色

本文发布于:2023-10-08 02:46:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1471284.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:轨道   如何更改   颜色   SwitchCompat

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!