Сделайте так, чтобы предпочтения выглядели отключенными, но при этом регистрировали щелчки

Так, во время определенных состояний в моем приложении я хочу отключить определенные CheckBoxPreferences в моем меню настроек. Однако, если пользователь щелкает их, я хочу, чтобы показывался пояснительный тост. Если я просто делаю setEnable (false); на CheckBoxPreference я получаю правильный внешний вид. Но я не могу получить тост, который будет отображаться при щелчке. С другой стороны, мне не удалось вручную сделать CheckBoxPreference похожим на него отключен.

10
задан pgsandstrom 25 August 2010 в 13:29
поделиться

1 ответ

Вместо того, чтобы отключать настройку, вы также можете отключить только представления настройки.

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
        }
    }

}
18
ответ дан 3 December 2019 в 20:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: