2017-12-13 5 views
-1

안드로이드에 두 정수의 소수점을 설정하고 한도를 55 자리로만 설정할 수있는 방법은 무엇입니까? 많이 검색 한 후 여기에 내 문제를 게시하고 있습니다. 나는 Edittext이고 android:inputType="number"입니다. EditText의 최대 한도를 55 자리로 설정할 수 있습니다. 나는 사용자가 0에서 55 사이의 숫자 인 을 24.22 또는 52.88 자릿수로 입력 할 수 있기를 원합니다.edittext에서 두 자리 뒤에 소수점을 넣는 방법은 무엇입니까?

일부 사람들은 어떻게 이것을 할 수 있습니까? 내 코드는 다음과 같습니다.

public class FuelCostCalculator extends DialogFragment { 

    EditText etLocation, etKilo, etLiter, etFuelCost; 



    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setStyle(DialogFragment.STYLE_NORMAL, R.style.fullscreen_dialog); 
    } 

    private void init(View view) { 
     //this is my editText 
     etLiter = view.findViewById(R.id.etLiter); 
     InputFilterMinMax filter = new InputFilterMinMax("0", "5499") {}; 
     etLiter.setFilters(new InputFilter[]{filter}); 

    } 
    } 

내 필터 클래스는 다음과 같습니다 도움

public class InputFilterMinMax implements InputFilter { 

    private int min, max; 

    public InputFilterMinMax(int min, int max) { 
     this.min = min; 
     this.max = max; 
    } 

    public InputFilterMinMax(String min, String max) { 
     this.min = Integer.parseInt(min); 
     this.max = Integer.parseInt(max); 
    } 

    @Override 
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { 
     try { 
      int input = Integer.parseInt(dest.toString() + source.toString()); 
      if (isInRange(min, max, input)) 
       return null; 
     } catch (NumberFormatException nfe) { } 
     return ""; 
    } 

    private boolean isInRange(int a, int b, int c) { 
     return b > a ? c >= a && c <= b : c >= b && c <= a; 
    } 
} 

모든 종류의 감사 :

+0

텍스트 편집시 텍스트 감시자를 사용할 수 있습니다. – Lucky

+0

TextWatcher가 내 문제를 해결하지 못했습니다. – Champandorid

+0

달성하고자하는 것은 무엇입니까? –

답변

-1

확인이 답변. 그것은 너무 깨끗한 아니지만 그것은 귀하의 요구에 따라 작동합니다. actAddItemFromDropdownList가 편집 텍스트이고 XML에서 최대 자릿수 제한을 설정했다고 가정합니다.

int max =0; 
String text =""; 
actAddItemFromDropdownList.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

     } 

     @Override 
     public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 


     } 

     @Override 
     public void afterTextChanged(Editable editable) { 

      if(actAddItemFromDropdownList.getText().length()>0){ 
       if(text.equals(actAddItemFromDropdownList.getText().toString())){ 
        text = ""; 
       }else { 
        text = actAddItemFromDropdownList.getText().toString(); 
        max = max + 1; 
        if (max == 2) { 
         text = text + "."; 
         max = 0; 
         actAddItemFromDropdownList.setText(text); 
         actAddItemFromDropdownList.setSelection(actAddItemFromDropdownList.getText().length()); 
        } 
       } 
      } 



     } 
    }); 

시도해보고 선택한 답변으로 표시하면됩니다.

+0

형제를 확인해 줘서 고마워. – Champandorid

+0

그것이 작동 했는가? ... –

+0

형제가 작동하지 않았다면 5 자리수를 입력하면 자동으로 소수점을 넣습니다. – Champandorid

관련 문제