按照您的要求,通过仅创建 xml 而不以编程方式处理来更改图标需要做很多工作,并且仍然需要在您的 java/kotlin 中添加一些代码。
这是我尝试过的:
我一直在尝试这种方式并且它有效,图标改变了,但是一旦我说过,不推荐这种方式在我看来。以编程方式处理图标更改更好、更有效。
调整你的 SwitchPreference
<SwitchPreference
android:title="@string/psm_pinterest"
android:defaultValue="false"
android:key="@string/pref_social_pinterest"/>
首先,在您的设置片段/活动中
设置布局以替换 SwitchPreference 的视图并创建切换侦听器。
例如,像这样:
SwitchPreference prefSocPin = (SwitchPreference) findPreference(getString(R.string.pref_social_pinterest));
prefSocPin.setWidgetLayoutResource(R.layout.pinterest_switch); // THIS IS THE KEY OF ALL THIS. HERE YOU SET A CUSTOM LAYOUT FOR PreferenceSwitch
prefSocPin.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
// Here you can enable/disable whatever you need to
return true;
}
});
二、创建布局pinterest_switch.xml
例如,像这样:
<?xml version="1.0" encoding="utf-8"?>
<Switch xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pinterest_switch_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:textIsSelectable="false"
android:track="@drawable/pinterest_track"
android:thumb="@drawable/pinterest_thumb"/>
三、在drawable中
与您的第一次尝试相同,在 drawable 中为状态侦听器创建 xml,但这次您将创建 2 个项目。一次用于轨道,一次用于拇指。
pinterest_track.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/switch_bg_focused" android:state_focused="true"/>
<item android:drawable="@drawable/switch_bg"/>
</selector>
pinterest_thumb.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/switch_thumb_disabled" android:state_enabled="false"/>
<item android:drawable="@drawable/switch_thumb_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/switch_thumb_activated" android:state_checked="true"/>
<item android:drawable="@drawable/switch_thumb"/>
</selector>
我正在关注 this reference 并根据您的需要进行一些调整。
总而言之,仅通过创建 xml 来更改图标是一项艰巨的工作,而且
无效的方式,在我看来。
好吧,我仍然试图回答你想要什么。享受吧。