我想在我的設置頁面中使用SwitchPreference,但我無法讓偵聽器工作。我正在使用自定義小部件佈局來設計開關樣式,因爲我無法找到如何使用主題來實現此目的。在我的settings.xml我有以下:SwitchPreference監聽器與自定義佈局
<SwitchPreference
android:key="uitestmode"
android:summary="Enable to display test data in fragments"
android:title="UI Test Mode"
android:widgetLayout="@layout/widget_custom_switch_on_off" >
</SwitchPreference>
和我SettingsFragment樣子:
SwitchPreference uiTestModePref = (SwitchPreference) findPreference("uitestmode");
uiTestModePref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
Log.d(preference.getKey(), newValue.toString());
return false;
}
});
和我爲我的切換自定義佈局:
<?xml version="1.0" encoding="utf-8"?>
<Switch xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/custom_switch_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:textColor="@android:color/white"
android:textIsSelectable="false"
android:textSize="18sp"
android:textOn="On"
android:textOff="Off"
android:textStyle="bold"
android:thumb="@drawable/carcast_switch_inner_holo_dark"
android:track="@drawable/carcast_switch_track_holo_dark" />
我的問題是,當我單擊開關時,偵聽器不會被調用。有誰知道爲什麼以及如何解決它?
嘿RickCase, 我已經使用了這個,你的解決方案就像一個魅力。但我想要一些額外的功能。不知道我是否需要爲它創造一個新的話題,但也許尼爾森b。奧斯汀也想要這個。 我想要的是我的喜好改變,當它被點擊(你的改變做了什麼),但也是可滑動的,使這個改變我的偏好。使其滑動可以通過更改android:clickable爲true來完成。但他解除了以前的解決方案。 你知道一個辦法嗎? 親切的問候, Jeroen – Jeroen
@Jeroen我沒有機會自己嘗試,但我想你可能想嘗試以下操作:1.將android:clickable設置爲true。將[OnCheckedChangeListener](http://developer.android.com/reference/android/widget/CompoundButton.OnCheckedChangeListener.html)設置爲Switch,然後手動更新首選項。這[鏈接](http://stackoverflow.com/questions/552070/android-how-do-i-set-a-preference-in-code)可能會有所幫助。 – RickCase
謝謝,這是解決方案 – Jeroen