gpt4 book ai didi

android - 如何在 EditText 中输入数字时自动添加千位分隔符

转载 作者:IT王子 更新时间:2023-10-28 23:48:14 27 4
gpt4 key购买 nike

我正在创建一个转换器应用程序。我想设置 EditText 以便当用户输入要转换的数字时,千位分隔符()一旦增加 3 个数字,就应该实时自动添加到数字:千,百万、十亿等
当删除到 4 位数以下时,数字会恢复正常。
有什么帮助吗?

最佳答案

即使已经很晚了。面向 future 的访客。

以下代码的特征

  1. EditText 中放置千位分隔符,因为它的文本发生变化。

  2. 添加 0. 按下句点 (.) 时自动添加。

  3. 在开始时忽略 0 输入。

只需复制以下内容类命名

NumberTextWatcherForThousand 实现 TextWatcher

import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import java.util.StringTokenizer;

/**
* Created by skb on 12/14/2015.
*/
public class NumberTextWatcherForThousand implements TextWatcher {

EditText editText;


public NumberTextWatcherForThousand(EditText editText) {
this.editText = editText;


}

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

}

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

}

@Override
public void afterTextChanged(Editable s) {
try
{
editText.removeTextChangedListener(this);
String value = editText.getText().toString();


if (value != null && !value.equals(""))
{

if(value.startsWith(".")){
editText.setText("0.");
}
if(value.startsWith("0") && !value.startsWith("0.")){
editText.setText("");

}


String str = editText.getText().toString().replaceAll(",", "");
if (!value.equals(""))
editText.setText(getDecimalFormattedString(str));
editText.setSelection(editText.getText().toString().length());
}
editText.addTextChangedListener(this);
return;
}
catch (Exception ex)
{
ex.printStackTrace();
editText.addTextChangedListener(this);
}

}

public static String getDecimalFormattedString(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++;
}

}

public static String trimCommaOfString(String string) {
// String returnString;
if(string.contains(",")){
return string.replace(",","");}
else {
return string;
}

}
}

在你的 EditText 上使用这个类,如下所示

editText.addTextChangedListener(new NumberTextWatcherForThousand(editText));

将输入作为纯双文本获取

像这样使用同一个类的trimCommaOfString方法

NumberTextWatcherForThousand.trimCommaOfString(editText.getText().toString())

Git

关于android - 如何在 EditText 中输入数字时自动添加千位分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12338445/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com