1

In my application I have an EditText and a Switch (view), but I want if the Switch is off for EditText to be not editable. Also, when the Switch is on, the EditText should be editable.

My Switch listener :

infoSerialFrag_rememberSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
        if (isChecked) {
            isRemember = true;
        } else {
            isRemember = false;
        }
    }
});

How can I do this?

Michael
  • 3,093
  • 7
  • 39
  • 83
  • [This](https://stackoverflow.com/questions/6555455/how-to-set-editable-true-false-edittext-in-android-programmatically) might help! – Chithra B Aug 02 '17 at 17:54
  • Have you tried using edittext.setFocusable(false); or editText.setEnabled(false); when the switch is off i.e in the else part of your code and the vice versa ? – Chithra B Aug 02 '17 at 18:48

2 Answers2

0
infoSerialFrag_rememberSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
        if (isChecked) {
            isRemember = true;
            editText.setFilters(new InputFilter[] {
                new InputFilter() {
                    public CharSequence filter(CharSequence src, int start, int end, Spanned dst, int dstart, int dend) {
                        return src.length() < 1 ? dst.subSequence(dstart, dend) : "";
                    }
                }
            });
        } else {
            isRemember = false;
            editText.setFilters(new InputFilter[] {});
        }
    }
});
Michael
  • 3,093
  • 7
  • 39
  • 83
Aman Grover
  • 1,621
  • 1
  • 21
  • 41
0

Try this code :

infoSerialFrag_rememberSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
        if (isChecked) {
            isRemember = true;
        } else {
            isRemember = false;
        }
        if (isRemember) {
            infoSerialFrag_rememberSwitchText.setFocusableInTouchMode(true);
        } else {
            infoSerialFrag_rememberSwitchText.setFocusable(false);
        }
    }
});

} else {
    hideView(infoSerialFrag_rememberSwitch);
}
if (isRemember) {
    infoSerialFrag_rememberSwitchText.setFocusableInTouchMode(true);
} else {
    infoSerialFrag_rememberSwitchText.setFocusable(false);
}
Michael
  • 3,093
  • 7
  • 39
  • 83
Mohammad Nouri
  • 2,245
  • 4
  • 17
  • 34