Решено!
AndroidManifest.xml
<activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboardHidden|orientation|keyboard" >
MainActivity.java
public void onCreate(Bundle savedInstanceState) {
....
setPriceInputFilter(amountEdit, interestEdit, fixedPaymentEdit, periodYearEdit, periodMonthEdit, downPaymentEdit, disposableCommissionEdit, monthlyCommissionEdit);
....
}
private void setPriceInputFilter(EditText ... fields){
PriceInputFilter filter = new PriceInputFilter();
for (EditText field: fields){
field.setFilters(new InputFilter[]{filter});
}
}
public void onConfigurationChanged(Configuration newConfig) {
if(newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO){
setInputType(InputType.TYPE_NULL, amountEdit, interestEdit, fixedPaymentEdit, periodYearEdit,
periodMonthEdit, downPaymentEdit, disposableCommissionEdit, monthlyCommissionEdit);
Toast.makeText(this, "HARD-keyboard", Toast.LENGTH_SHORT).show();
}else{
setInputType(InputType.TYPE_CLASS_PHONE, amountEdit, interestEdit, fixedPaymentEdit, periodYearEdit,
periodMonthEdit, downPaymentEdit, disposableCommissionEdit, monthlyCommissionEdit);
Toast.makeText(this, "SOFT-keyboard", Toast.LENGTH_SHORT).show();
}
super.onConfigurationChanged(newConfig);
}
private void setInputType(int type , EditText ... fields){
for (EditText field: fields){
field.setInputType(type);
}
}
PriceInputFilter.java
public class PriceInputFilter implements InputFilter {
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
String checkedText = dest.toString() + source.toString();
String pattern = getPattern();
if (!Pattern.matches(pattern, checkedText)) {
return "";
}
return null;
}
private String getPattern() {
return "[0-9]+([.]{1}||[.]{1}[0-9]{1,2})?";
}
}