Как применить собственный стиль ко всем переключателям с помощью атрибута switchStyle - PullRequest
0 голосов
/ 06 января 2019

Я знаю, что мы можем просто добиться этого, используя атрибуты colorControl, и применить стиль, используя атрибут theme в представлении. Например,

<style name="MySwitch">
    <item name="colorControlNormal">@color/grey</item>
    <item name="colorControlActiviated">@color/primaryColor</item>
</style>

<Switch
    ...
    app:theme="@style/MySwitch"/>

Но в этом сценарии нам необходимо применить атрибут theme ко всем переключателям в действии или в приложении. Вместо этого я хочу применить это ко всей теме приложения. Итак, я пытался добиться того же, используя эти способы, но ничего из этого не сработало.

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/primaryColor</item>
    <item name="colorPrimaryDark">@color/primaryDarkColor</item>
    <item name="colorAccent">@color/secondaryColor</item>
    <item name="switchStyle">@style/MySwitch</item>
</style>

Метод 1:

<style name="MySwitch" parent="Widget.AppCompat.CompoundButton.Switch">
    <item name="buttonTint">@color/primaryColor</item>
</style>

switch_thumb:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/primaryColor" android:state_checked="true" />
    <item android:color="@android:color/darker_gray" />
</selector>

switch_track:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/primaryLightColor" android:state_checked="true" />
    <item android:color="@android:color/darker_gray" />
</selector>

Метод 2:

<style name="MySwitch" parent="Widget.AppCompat.CompoundButton.Switch">
    <item name="thumbTint">@drawable/switch_thumb</item>
    <item name="trackTint">@drawable/switch_track</item>
</style>

Метод 3:

<style name="MySwitch" parent="Widget.AppCompat.CompoundButton.Switch">
    <item name="thumb">@drawable/switch_thumb</item>
    <item name="track">@drawable/switch_track</item>
</style>

Я пытался найти другие решения, но они не содержат информацию о применении стиля ко всей теме, как я хочу.

...