[英]Problem with androidx.preference.SwitchPreference Android Studio
[英]Changing android preference icon with SwitchPreference Setting
我的Android應用程序中有一個SwitchPreference
,可以將其設置為“ on
”或“ off
”。 我有一個此SwitchPreference
的圖標。 下面的XML代碼
<SwitchPreference
android:title="@string/psm_pinterest"
android:defaultValue="false"
android:key="@string/pref_social_pinterest"
android:icon="@drawable/pinterest_bw"
android:summaryOn="@string/psm_pinterest_summary_on"
android:summaryOff="@string/psm_pinterest_summary_off"/>
但是,我還希望icon
在SwitchPreference
更改時更改。 反正有通過XML做到這一點嗎? 我嘗試使用“狀態”設置創建“ drawable
” xml,但是當我更改SwitchPreference
設置時,沒有任何“狀態”被調用。
我現在以編程方式處理此問題,但我正在尋找一種更有效的方式來通過XML本身來完成此任務。 感謝幫助
按照您的需要,僅通過創建xml而不通過編程即可處理就可以更改圖標,這是需要完成的工作,而且在Java / kotlin中仍然需要一些代碼。
我已經嘗試過這種方法,並且可以正常工作,圖標已更改,但是一旦我說了, 我認為不建議使用這種方法。 以編程方式處理圖標更改會更好,更有效。
<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;
}
});
例如,像這樣:
<?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"/>
與您的第一次嘗試相同,在可繪制的狀態監聽器中創建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>
我正在根據您的需要對此參考進行一些調整。
總而言之,我認為僅通過創建xml來更改圖標是一項更艱巨且無效的方法。 好吧,我仍然想回答您想要的東西。 請享用。
經過廣泛的研究和咨詢,看來如果不編寫任何相關代碼,現在真的沒有辦法僅使用XML來實現。 我將進行監視,如果可能的話,我將更新分析器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.