所以在我的应用程序的某些状态下,我想在我的设置菜单中禁用某些CheckBoxPreferences.但是,如果用户点击它们,我想要一个说明性的吐司.如果我只是做setEnable(false);在CheckBoxPreference上,我确实得到了正确的外观和感觉.但是我不能在点击中显示吐司.另一方面,我手动使一个CheckBoxPreference看起来像是被禁用失败.
解决方法
而不是禁用首选项,您也可以禁用仅偏好设置的视图.
public class DisabledAppearanceCheckBoxPreference extends CheckBoxPreference { protected boolean mEnabledAppearance = false; public DisabledAppearanceCheckBoxPreference(Context context,AttributeSet attrs) { super(context,attrs); } @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 ( mEnabledAppearance) super.onClick(); else{ // show your toast here } } }