2016-09-09 3 views
0

EditTextToggleButton 피트 피트/인치 및 센티미터가 있습니다. 사용자가 피트/인치 옵션을 선택하고 높이를 입력 한 경우 이제 사용자가 센티미터 옵션을 ToggleButton에서 선택하면 자동으로 높이를 센티미터로 변경해야합니다.ToggleButton을 클릭하면 사람 높이가 센티미터로 바뀝니다

은 이런 식으로 뭔가를 시도 :

 public void onClick(View view) { 
     switch (view.getId()) 
     { 
      case R.id.btnCm: 
       toggleHeightButton(R.id.btnCm,R.id.btnFeet,false); 
       break; 
      case R.id.btnFeet: 
       toggleHeightButton(R.id.btnFeet,R.id.btnCm,true); 
       enter_height.addTextChangedListener(new CustomTextWatcher(enter_height)); 
       break; 
      case R.id.btnKg: 
       toggleweightButton(R.id.btnKg,R.id.btnpound,false); 
       break; 
      case R.id.btnpound: 
       toggleweightButton(R.id.btnpound,R.id.btnKg,true); 
       break; 

     } 
    } 

    public class CustomTextWatcher implements TextWatcher { 
     private EditText mEditText; 
    public CustomTextWatcher(EditText enter_height) { 
     mEditText = enter_height; 
    } 



    public void beforeTextChanged(CharSequence s, int start, int count, 
            int after) { 
    } 

    public void onTextChanged(CharSequence s, int start, int before, int count) { 
    } 

    public void afterTextChanged(Editable s) { 
     int count = s.length(); 
     String str = s.toString(); 
     if (count == 1) { 
      str = str + "'"; 
     } else if (count == 2) { 
      return; 
     } else if (count == 3) { 
      str = str + "\""; 
     } else if ((count > 4) && (str.charAt(str.length() - 1) != '\"')){ 
      str = str.substring(0, str.length() - 2) + str.charAt(str.length() - 1) 
        + "\""; 
     } else { 
      return; 
     } 

     mEditText.setText(str); 
     mEditText.setSelection(mEditText.getText().length()); 
    } 
} 

아무도 내가 접근 할 수있는 방법을 여기에서 저를 알 수 있습니다. 나는 또한 높이를 확인하고 싶었다. 에서

+0

[피트와 인치를 센티미터와 바이스로 변환 할 때 이상한 문제] (http://stackoverflow.com/questions/17062094/strange-issue-in-converting-feet-and-inches-to-centimeter) -그 반대) –

답변

0

당신의 onToggleListener/OnClickListener를()

//toCm is true if converting from inches to centimeters 
private void toggleHeight(int height, boolean toCm) { 

    if (height > 0) { 
     if (toCm) { 
      //2.54cm is equal to 1inch 
      return height/2.54; 
     } else { 
      return height * 2.54. 
     } 
    } else { 
     return 0; 
    } 
} 

그런 다음 사용자에게 표시됩니다 새로운 높이로 mEditText을 설정할 수 있습니다.

일부 정밀도 손실이 있지만 사용자에게이를 단순히 표시하려는 방법으로 보게되면 정상적으로 작동합니다.

관련 문제