EditText数字分组仅显示4个字符

时间:2019-05-04 23:13:40

标签: java android

我有一个edittext,我想用数字分组输入数字,但是当我键入数字时,它只显示4位数字,

我想要的是:1.234.567.890

但仅显示:1.234

该如何解决?这是我的代码:

txtrupiah.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence _param1, int _param2, int _param3, int _param4) {
                final String _charSeq = _param1.toString();
                String input = _param1.toString();

                if (!input.isEmpty()) 
                { 
                    input = input.replace(",", ""); 

                    DecimalFormat format = new DecimalFormat("#,###,###"); 
                    String newPrice = format.format(Double.parseDouble(input)); 

                    txtrupiah.removeTextChangedListener(this); 

                    txtrupiah.setText(newPrice); txtrupiah.setSelection(newPrice.length()); 

                    txtrupiah.addTextChangedListener(this); 
                }
            }

            @Override
            public void beforeTextChanged(CharSequence _param1, int _param2, int _param3, int _param4) {

            }

            @Override
            public void afterTextChanged(Editable _param1) {

            }
        });

2 个答案:

答案 0 :(得分:0)

使用DecimalFormatSymbols()可以做到这一点,DecimalFormat可以用于四舍五入数字。如果要更改分隔符“。” ,您可以使用fs.setGroupingSeparator('。')

txtrupiah.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence _param1, int _param2, int _param3, int _param4) {
                final String _charSeq = _param1.toString();
                String input = _param1.toString();

                if (!input.isEmpty()) 
                { 
                    input = input.replace(",", ""); 

                    // Define new Format
                    DecimalFormat f = new DeciamlFormat("#,###");
                    DecimalFormatSymbols fs = new DecimalFormatSymbols(Locale.getDefault());
                    f.setDeciamlFormatSymbols(fs);
                    String newPrice = f.format(Double.parseDouble(input));

                    txtrupiah.removeTextChangedListener(this); 

                    txtrupiah.setText(newPrice); txtrupiah.setSelection(newPrice.length()); 

                    txtrupiah.addTextChangedListener(this); 
                }
            }

            @Override
            public void beforeTextChanged(CharSequence _param1, int _param2, int _param3, int _param4) {

            }

            @Override
            public void afterTextChanged(Editable _param1) {

            }
        });

答案 1 :(得分:0)

我正在使用素描软件,这是我的代码先生,

package com.my.kwitansi;

import android.app.*;
import android.os.*;
import android.view.*;
import android.view.View.*;
import android.widget.*;
import android.content.*;
import android.graphics.*;
import android.media.*;
import android.net.*;
import android.text.*;
import android.util.*;
import android.webkit.*;
import android.animation.*;
import android.view.animation.*;
import java.util.*;
import java.text.*;
import android.app.Activity;
import java.util.ArrayList;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.EditText;
import android.text.Editable;
import android.text.TextWatcher;

public class MainActivity extends Activity {


    private double terbilang = 0;
    private double angka = 0;
    private String a = "";
    private double b = 0;

    private ArrayList<String> nama = new ArrayList<>();

    private LinearLayout linemain;
    private TextView textview1;
    private LinearLayout linear1;
    private LinearLayout linear4;
    private LinearLayout linear3;
    private LinearLayout linear2;
    private TextView textview2;
    private EditText txtnama;
    private TextView textview6;
    private TextView textview5;
    private EditText txtrupiah;
    private TextView textview4;
    private EditText txtpembayaran;
    private TextView textview3;
    private TextView txtterbilang;
    @Override
    protected void onCreate(Bundle _savedInstanceState) {
        super.onCreate(_savedInstanceState);
        setContentView(R.layout.main);
        initialize(_savedInstanceState);
        initializeLogic();
    }

    private void initialize(Bundle _savedInstanceState) {

        linemain = (LinearLayout) findViewById(R.id.linemain);
        textview1 = (TextView) findViewById(R.id.textview1);
        linear1 = (LinearLayout) findViewById(R.id.linear1);
        linear4 = (LinearLayout) findViewById(R.id.linear4);
        linear3 = (LinearLayout) findViewById(R.id.linear3);
        linear2 = (LinearLayout) findViewById(R.id.linear2);
        textview2 = (TextView) findViewById(R.id.textview2);
        txtnama = (EditText) findViewById(R.id.txtnama);
        textview6 = (TextView) findViewById(R.id.textview6);
        textview5 = (TextView) findViewById(R.id.textview5);
        txtrupiah = (EditText) findViewById(R.id.txtrupiah);
        textview4 = (TextView) findViewById(R.id.textview4);
        txtpembayaran = (EditText) findViewById(R.id.txtpembayaran);
        textview3 = (TextView) findViewById(R.id.textview3);
        txtterbilang = (TextView) findViewById(R.id.txtterbilang);

        txtrupiah.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence _param1, int _param2, int _param3, int _param4) {
                final String _charSeq = _param1.toString();
                String input = _param1.toString(); 
                if (!input.isEmpty()) { 
                    input = input.replace(",", ""); 

                    DecimalFormat f = new DecimalFormat("#,###"); DecimalFormatSymbols fs = new DecimalFormatSymbols(Locale.getDefault());

                    f.setDecimalFormatSymbols(fs); String newPrice = f.format(Double.parseDouble(input)); 

                    txtrupiah.removeTextChangedListener(this); 
                    txtrupiah.setText(newPrice); txtrupiah.setSelection(newPrice.length()); txtrupiah.addTextChangedListener(this); 
                }
            }

            @Override
            public void beforeTextChanged(CharSequence _param1, int _param2, int _param3, int _param4) {

            }

            @Override
            public void afterTextChanged(Editable _param1) {

            }
        });
    }
    private void initializeLogic() {
    }

    @Override
    protected void onActivityResult(int _requestCode, int _resultCode, Intent _data) {
        super.onActivityResult(_requestCode, _resultCode, _data);

        switch (_requestCode) {

            default:
            break;
        }
    }

    @Deprecated
    public void showMessage(String _s) {
        Toast.makeText(getApplicationContext(), _s, Toast.LENGTH_SHORT).show();
    }

    @Deprecated
    public int getLocationX(View _v) {
        int _location[] = new int[2];
        _v.getLocationInWindow(_location);
        return _location[0];
    }

    @Deprecated
    public int getLocationY(View _v) {
        int _location[] = new int[2];
        _v.getLocationInWindow(_location);
        return _location[1];
    }

    @Deprecated
    public int getRandom(int _min, int _max) {
        Random random = new Random();
        return random.nextInt(_max - _min + 1) + _min;
    }

    @Deprecated
    public ArrayList<Double> getCheckedItemPositionsToArray(ListView _list) {
        ArrayList<Double> _result = new ArrayList<Double>();
        SparseBooleanArray _arr = _list.getCheckedItemPositions();
        for (int _iIdx = 0; _iIdx < _arr.size(); _iIdx++) {
            if (_arr.valueAt(_iIdx))
            _result.add((double)_arr.keyAt(_iIdx));
        }
        return _result;
    }

    @Deprecated
    public float getDip(int _input){
        return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, _input, getResources().getDisplayMetrics());
    }

    @Deprecated
    public int getDisplayWidthPixels(){
        return getResources().getDisplayMetrics().widthPixels;
    }

    @Deprecated
    public int getDisplayHeightPixels(){
        return getResources().getDisplayMetrics().heightPixels;
    }

}