婷婷同学_
这就是我使用支持库的方法preference-v7。扩展 Preference和覆盖onBindViewHolder()。此方法使您可以通过ViewHolder对象获取对首选项视图的引用。使用setWidgetLayoutResource()或setLayoutResource()在构造函数中膨胀自定义视图。禁用整个首选项视图的默认单击行为,并且仅允许单击内部的自定义视图。layout / preference_theme.xml<?xml version="1.0" encoding="utf-8"?> PreferenceTheme.java(自定义Preference类)import android.support.v7.preference.Preference;import android.support.v7.preference.PreferenceViewHolder;public class PreferenceTheme extends Preference { public PreferenceTheme(Context context, AttributeSet attrs) { this(context, attrs, 0); } public PreferenceTheme(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); setWidgetLayoutResource(R.layout.preference_theme); } @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); holder.itemView.setClickable(false); // disable parent click View button = holder.findViewById(R.id.theme_dark); button.setClickable(true); // enable custom view click button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // persist your value here } }); // the rest of the click binding }}preferences.xml<?xml version="1.0" encoding="utf-8"?> ...