package com.nolanlawson.logcat.widget; import android.content.Context; import android.preference.ListPreference; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; /** * ListPreference that I can give a disabled-looking appearance to, while it still remains enabled. Also, * I can override the onClick() so that it doesn't actually pop up the list of options. * @author nlawson * */ public class MockDisabledListPreference extends ListPreference { private boolean mEnabledAppearance = false; private OnPreferenceClickListener onClickOverride; public MockDisabledListPreference(Context context, AttributeSet attrs) { super(context, attrs); } public MockDisabledListPreference(Context context) { super(context); } @Override protected void onBindView(View view) { super.onBindView(view); boolean viewEnabled = isEnabled() && mEnabledAppearance; enableView(view, viewEnabled); } protected void enableView( View view, boolean enabled){ view.setEnabled(enabled); if ( view instanceof ViewGroup){ ViewGroup grp = (ViewGroup)view; for ( int index = 0; index < grp.getChildCount(); index++) enableView(grp.getChildAt(index), enabled); } } public void setEnabledAppearance( boolean enabled){ mEnabledAppearance = enabled; notifyChanged(); } @Override protected void onClick() { if (onClickOverride != null) { onClickOverride.onPreferenceClick(this); } else { super.onClick(); } } public void overrideOnClick(OnPreferenceClickListener onClickOverride) { this.onClickOverride = onClickOverride; } }