在安卓中使用EditText和TextView时,如何让数字显示成带有千分位分隔符(,)的格式?

3

当我在EditText中输入时,希望出现千位分隔符(,)。然后,我会对这个数字进行一些操作,再通过千位分隔符(,)在TextView中显示结果。

以下是我的代码:

public class Mainactivity extends Activity {

/** Called when the activity is first created. */

EditText        edt;
TextView        txt;
Button          btn;

OnClickListener myclick = new OnClickListener() {

                            @Override
                            public void onClick(View arg0) {

                                // my calculation
                                double num1 = Double.parseDouble(edt.getText().toString());
                                double num2 = num1 + 7;

                                txt.setText("" + num2);

                            }
                        };


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    edt = (EditText) findViewById(R.id.edt);
    txt = (TextView) findViewById(R.id.txt);
    btn = (Button) findViewById(R.id.btn);

    btn.setOnClickListener(myclick);

}

}


1
你可以使用以下链接中的答案:https://dev59.com/8Wct5IYBdhLWcg3wHZ1q。 - GioLaq
2个回答

8

您可以使用

String value=String.format("%,.2f", num );

将数字解析为带有千位分隔符的字符串,然后将结果设置到您想要的TextView或EditText中。

例如:

txt.setText(String.format("%,.2f", num ));
edt.setText(String.format("%,.2f", num ));

对于textView来说很好,但是对于EditText我想要在输入值时分开。 - nasim12w

1
尝试使用这段代码。
        @Override
        public void afterTextChanged(Editable s) {

            try
            {
                edittext.removeTextChangedListener(this);
                String value = edittext.getText().toString();
                if (value != null && !value.equals(""))
                {
                    String str = edittext.getText().toString().replaceAll(",", "");
                    if (value != null && !value.equals(""))
                        Double.valueOf(str).doubleValue();
                    edittext.setText(getDecimalFormat(str));
                    edittext.setSelection(edittext.getText().toString().length());
                }
                edittex.addTextChangedListener(this);
                return;
            }
            catch (Exception localException)
            {
                localException.printStackTrace();
                edittext.addTextChangedListener(this);
            }
        }

 private String getDecimalFormat(String value)
{
    StringTokenizer lst = new StringTokenizer(value, ".");
    String str1 = value;
    String str2 = "";
    if (lst.countTokens() > 1)
    {
        str1 = lst.nextToken();
        str2 = lst.nextToken();
    }
    String str3 = "";
    int i = 0;
    int j = -1 + str1.length();
    if (str1.charAt( -1 + str1.length()) == '.')
    {
        j--;
        str3 = ".";
    }
    for (int k = j;; k--)
    {
        if (k < 0)
        {
            if (str2.length() > 0)
                str3 = str3 + "." + str2;
            return str3;
        }
        if (i == 3)
        {
            str3 = "," + str3;
            i = 0;
        }
        str3 = str1.charAt(k) + str3;
        i++;
    }
}

希望能帮到您


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接