单击ToggleButton

时间:2016-09-09 13:19:57

标签: android

我有EditText 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());
    }
}

有人可以从这里告诉我如何处理。我也想验证身高。

1 个答案:

答案 0 :(得分: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设置为新的高度,将其显示给用户。

会有一些精确损失,但看到你只是想把它显示给用户,这应该可以正常工作。