android edittext货币格式不带美元符号

2024-01-08

我尝试在我的编辑文本中创建货币格式。我搜索并缠绕代码,我可以在我的编辑文本中添加货币格式

        transfer_maney.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

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

            if (!s.toString().equals(current)) {
                transfer_maney.removeTextChangedListener(this);

                String cleanString = s.toString().replaceAll("[$,.]", "");

                double parsed = Double.parseDouble(cleanString);
                String formatted = NumberFormat.getCurrencyInstance().format((parsed / 100));
                current = formatted;
                transfer_maney.setText(formatted);
                transfer_maney.setSelection(formatted.length());


            }

        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    })

现在我想禁用/隐藏输入中的 $ 符号。可以隐藏/删除这个符号(我想要没有这个符号的格式) 如果有人知道解决方案请帮助我 感谢大家


在您的 Java 代码中:

/* if you want $ inside editbox , put the $ before comma : "%$,.2f" */
final EditText valorTxt = (EditText) viewAccept.findViewById(R.id.valorInput);
final MoneyTextWatcher ptw = new MoneyTextWatcher(valorTxt, "%,.2f");
valorTxt.addTextChangedListener(ptw);

xml活动

<EditText
                    android:id="@+id/valorInput"
                    android:layout_width="0dp"
                    android:layout_weight="5"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:gravity="right"
                    android:hint="Value $"
                    android:inputType="numberDecimal"
                    android:textSize="20sp" />
                    </LinearLayout>

/*这个类已经接受复制粘贴值*/

公共类 PayTextWatcher 实现 TextWatcher

import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.widget.EditText;

import java.text.DecimalFormat;
import java.util.Locale;

public class PayTextWatcher implements TextWatcher
{
    public static final String T = "PayTextWatcher";

    private final EditText editText;
    protected int max_length = Integer.MAX_VALUE;
    private String formatType;
    private String current = "";
    private boolean insertingSelected = false;
    private boolean isDeleting;

    /**
     * @param editText
     * @param formatType String formatting style like "%,.2f $"
     */
    public PayTextWatcher(EditText editText, String formatType)
    {
        this.editText = editText;
        this.formatType = formatType;
        Log.e(T, "::PayTextWatcher:" + "formatType " + formatType);
    }


    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after)
    {
        Log.i(T, "::beforeTextChanged:" + "CharSequence " + s + " start=" + start + " count=" + count + " after=" +
                after);
        if (after <= 0 && count > 0)
        {
            isDeleting = true;
        } else
        {
            isDeleting = false;
        }
        if (!s.toString().equals(current))
        {
            editText.removeTextChangedListener(this);
            String clean_text = s.toString().replaceAll("[^\\d]", "");
            editText.setText(clean_text);
            editText.addTextChangedListener(this);
        }

    }


    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count)
    {
        Log.i(T, "::onTextChanged:" + "CharSequence " + s + " start=" + start + " count=" + count + " before=" +
                before);
        if (start == 0 && before >= 4)
        {
            insertingSelected = true;
        }
    }


    @Override
    public synchronized void afterTextChanged(Editable s)
    {
        Log.i(T, "::afterTextChanged:" + "Editable " + s + "; Current " + current);
        if (!s.toString().equals(current))
        {
            editText.removeTextChangedListener(this);
            String digits = s.toString();

            if (insertingSelected)
            {
                digits = String.valueOf(toDouble(digits));
            }
            String formatted_text;
            double v_value = 0;
            try
            {
                formatted_text = String.format(new Locale("pt", "BR"), formatType, Double.parseDouble(digits));

            } catch (NumberFormatException nfe)
            {
                v_value = toDouble(digits);
                formatted_text = String.format(new Locale("pt", "BR"), formatType, v_value);
            }

            current = formatted_text;
            editText.setText(formatted_text);
            editText.setSelection(formatted_text.length());
            editText.addTextChangedListener(this);
        }

    }

    private String deleteLastChar(String clean_text)
    {
        if (clean_text.length() > 0)
        {
            clean_text = clean_text.substring(0, clean_text.length() - 1);
        } else
        {
            clean_text = "0";
        }
        return clean_text;
    }

    /**
     * @param str String with special caracters
     *
     * @return a double value of string
     */
    public double toDouble(String str)
    {
        str = str.replaceAll("[^\\d]", "");
        if (str != null && str.length() > 0)
        {

            double value = Double.parseDouble(str);
            String s_value = Double.toString(Math.abs(value / 100));
            int integerPlaces = s_value.indexOf('.');
            if (integerPlaces > max_length)
            {
                value = Double.parseDouble(deleteLastChar(str));
            }

            return value / 100;
        } else
        {
            return 0;
        }
    }


    public int getMax_length()
    {
        return max_length;
    }


    public void setMax_length(int max_length)
    {
        this.max_length = max_length;
    }

}

结果是:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android edittext货币格式不带美元符号 的相关文章

  • Android 两次请求 USB 许可

    我有一个运行 Android 4 0 4 的开发板 并将其用作 USB 配件 当我关闭板上的应用程序然后通过 USB 插入 Android 手机时 板会提示 连接此 USB 设备时打开 AppName 当我触摸 确定 时 应用程序启动并再次
  • 在通知声音中暂停/恢复媒体播放器

    很容易检测到电话何时打入 通过phoneStateListener 但是其他通知声音 例如电子邮件或短信 又如何呢 在某些设备上 这些通知听起来很静音 但不会暂停任何当前正在运行的 mediaPlayer 实例 这对用户来说很烦人 理想情况
  • 如何在android中直接从.zip文件读取文件而不解压它

    过去几个月我一直在研究 android 现在我的问题是读取放在 sdcard 上的 zip 文件 我已经成功完成了将 zip 文件下载到 SD 卡上的编码 我已将 img zip 文件下载到 SD 卡上 此 img zip 包含 5 个图像
  • 在 Android 中使用 Facebook Achievement API

    我知道这可能看起来像一个通用问题 但找到有关该主题的信息似乎非常困难 因此 如果某个地方存在完整的示例 指南 源代码链接 我将不胜感激 我正在开发一款 Android 游戏 希望集成 Facebook 成就 我想要的只是在用户完成某个谜题时
  • Android 中未找到 PhoneGap 类错误

    我的 PhoneGap Android 应用程序遇到一些问题 到目前为止我明白了 我已经把一切都做好了 这是我所做的 在 Eclipse 中创建项目后 我在 libs 文件夹中添加了 cordova 2 2 0 jar 然后我编辑了Andr
  • Android 中的 ImageView 拖动限制

    我在布局中有一个 ImageView 并在 ImageView 上设置 OnTouchListener 来拖动 ImageView 它工作得很好 我的问题是如何防止将 ImageView 移动到布局范围之外 这是我的代码 活动类别 publ
  • 如何更改所有 ListView 的默认分隔线颜色

    我正在尝试为 style xml 中的所有 listView 应用默认样式 请注意 在某些地方我使用嵌套列表视图 In 样式 xml
  • 将文本视图添加到布局中?

    如果我的按钮不移动 我就无法在按钮上方放置文本视图 我该如何解决这个问题 被困在这个问题上 4 个小时了 这很伤心 因为我正在尝试在我的布局上添加一个文本视图 我的布局中心有 4 个按钮 我只想在四个按钮上方添加一个文本视图 如下所示 Te
  • WebView ssl 错误

    对不起我的英语不好 我需要加载 url https 我有一些问题 当我尝试加载页面时 webView 给我错误 primary error 3 certificate Issued to CN my site com Issued by C
  • 如何通过代码改变Android SlidingDrawer的方向?

    当我从横向模式更改为纵向模式时 我无法找到设置 SlidingDrawer 方向的方法 反之亦然 最初我将 xml 的方向设置为垂直 当手机处于横向模式时 我需要将方向更改为水平 因此我将手柄放在左侧 有人有什么想法吗 我认为按照标准这是不
  • 如何使用 Mikephil 饼图从项目中删除小数位

    这是整数的静态值 private int upload 14 bill 15 unbill 85 total 100 unupload 12 sign 10 unsign 90 print 12 unprint 88 设置饼图条目 Arra
  • 如何从其他 Activity 类访问 Activity 的视图

    我的问题是当我更改文本时TextView在我的主类中 它返回 nullPointerException 这是我的代码 main xml
  • 处理网络视图中的链接

    我有我的WebView加载网络视图中的所有链接 但是当我选择电子邮件链接时 它会尝试将其加载到网络视图中 而不是在手机上启动电子邮件应用程序 我该如何解决这个问题 链接是mailto 电子邮件受保护 cdn cgi l email prot
  • MediaPlayer.getDuration() 返回错误的持续时间

    媒体播放器的getDuration 方法为我提供了某些音频文件的错误值 我认为所有这些文件的共同特征是它们是使用 Audacity 或其他一些音频编辑工具进行操作的 当尝试将 MediaPlayer 进度绑定到进度栏时 这是一个问题 我继续
  • 带有 DialogFragment 的上下文操作栏

    我一直在尝试实现一个上下文操作栏和一个对话框片段 类似于android中的下载小部件 我尝试过设置android windowActionModeOverlay主题要真实 但这似乎不起作用 有什么办法我可以实现它吗 您在屏幕截图中看到的下载
  • OkHttp javax.net.ssl.SSLPeerUnverifiedException:主机名domain.com未验证

    我几天来一直在努力让它发挥作用 我正在尝试通过以下方式连接到我的服务器https带有自签名证书 我认为现在没有任何页面或示例是我未读过的 我做了什么 按照本教程创建了 bks 密钥库 http blog crazybob org 2010
  • 现已弃用使用 Google Places API 获取多种类型

    谷歌最近宣布 自 2016 年 2 月 16 日起 types 参数已被弃用 取而代之的是新的类型参数 每个搜索请求仅支持一种类型 我的问题是 现在有什么方法 不使用已弃用的参数 从单个 API 调用中获取多个地点类型吗 谢谢 None
  • AS更新到1.0后,项目中出现“method ID not in [0, 0xffff]: 65536”错误

    我将 Android Studio 更新到最新版本 并让它 修复项目 之类的 但现在我的项目无法编译 给了我 FAILED FAILURE Build failed with an exception What went wrong Exe
  • 从纵向活动返回横向活动时屏幕旋转 3 次

    我的 Android 8 1 平板电脑遇到此问题 该设备的自然方向是横向 我有 2 项活动 A配置了fullSensor 包含一个recyclerview来加载带有缩略图的项目 B 是纵向 包含表面视图
  • Android 如何在按下或聚焦时使 TextView 文本变为粗体

    我的布局中有一个文本视图 我的要求是当我按下或聚焦它时 文本应该是粗体 否则应该使用普通字体 我该如何实施 使用下面的代码 TextView name TextView findViewById R id TextView01 name h

随机推荐

  • 迭代 CSV 文件中的列 (PHP)

    我需要编写一个函数 以年份和温度作为输入 并返回给定年份中温度等于或低于给定温度的天数 由于数据是关于小时而不是天 因此需要找到小时数并将其除以 24 示例 getDaysUnderTemp 2019 10 返回 13 92 CSV 文件如
  • ng2-smart-table 缺少依赖项完成程序

    我正在使用 Ng2SmartTable 并且出现此错误 目标入口点 ng2 smart table 丢失时出现错误 依赖项 akveo ng2 completer 我已经尝试过以下命令 但它不起作用 1 npm install save n
  • 在 C++ 中分配和使用无类型内存块的正确方法是什么?

    到目前为止 我对这个问题得到的答案有两种完全相反的答案 它是安全的 和 它是未定义的行为 我决定完全重写这个问题 以便为我和任何可能通过谷歌到达这里的人获得一些更好的澄清答案 另外 我删除了C标签 现在这个问题是 C 特定的 我正在制作一个
  • chrome.storage.sync.set 不保存值

    因此 我在 Google Chrome 上的本地存储方面遇到了一些障碍 根据我的研究 我的语法似乎是正确的 但由于某种原因该值没有被保存 这是我的代码 chrome storage sync get accName function dat
  • 如何手动将 dns 条目添加到由 AWS ECS 服务发现管理的托管区域?

    我正在 AWS ECS 中的私有托管区域中使用容器服务发现staging example com 现在 在容器旁边 我想将 AWS RDS 数据库映射到db staging example com 但是 我无法修改 Route53 托管区域
  • 如何使用 Android Studio 2.2.3 调试外部本机库的 C++ 源代码?

    我有一个在Windows 10下由Android Studio 2 2 3创建的android项目 该项目通过其包装jar 通过JNI 使用本机库 本机库是由 qmake 在 Android Studio 之外构建的 它将使用 androi
  • 如何将文本文件转换为ARFF格式?

    我正在使用 WEKA 工具进行文本分类 并且必须将纯文本文件转换为 ARFF 格式 但是 我不知道该怎么做 谁能帮我将文本文件转换为 ARFF 格式 谢谢伦克劳夫的回复 我不明白这些要点 由于像记事本这样的文本编辑器只允许有限数量的列 因此
  • 错误:‘$’未定义。[no-undef]

    我想用一些 jQuery 来做一个粘性导航栏但我得到了错误 ERROR is not defined no undef ERROR document is not defined no undef 并且代码不起作用 有人可以帮助我为什么会出
  • 我可以在不使用好友的情况下从班级外部访问私人成员吗?

    免责声明 是的 我完全意识到我所问的问题是完全愚蠢的 任何希望在生产代码中尝试这样的事情的人都应该被解雇和 或枪杀 我主要是想看看是否can做完了 现在这已经不成问题了 有什么方法可以从类外部访问 C 中的私有类成员吗 例如 有什么方法可以
  • 解析 JSON 数组并加载到 hive 表中

    我有一个如下所示的 Json 数组 Name xxxx Machine Machine1 Name yyyy Machine Machine2 Name zzzz Machine Machine3 我需要解析该数据并加载到如下所示的配置单元
  • 循环内分配内存与循环外分配内存

    在循环的每次迭代中分配大块堆内存是否会带来明显的性能损失 当然 我在每次迭代结束时释放它 另一种方法是在进入循环之前分配一次 在所有迭代中重复使用它 并最终在退出循环后释放它 请参阅下面的代码 allocation inside loop
  • PowerMock java.lang.ClassCastException:sun.net.www.protocol.https.HttpsURLConnectionImpl 无法转换为 javax.net.ssl.HttpsURLConnection

    我创建了一个模拟HttpsURLConnection基于一个堆栈交换答案 https stackoverflow com a 25334710 939250 import java net URL import javax net ssl
  • 如何通过ajax调用获取JSON数据

    我想得到JSON来自 ajax 调用的 php 页面的数据 php 页面正在返回AJAX字符串 现在我必须得到它JSON数据和显示值分开 我怎样才能做到这一点 这是我正在使用的代码 当我运行此代码来获取数据product id 时 它显示警
  • Django 中如何发送电子邮件

    我有设置 py Email settings EMAIL BACKEND django core mail backends smtp EmailBackend EMAIL HOST smtp gmail com EMAIL HOST US
  • 通过Java从.class文件中获取ByteCode(依赖)信息

    我想分析一下 class文件并获取有关哪个类使用哪个其他类的信息 jdeps是一个命令行工具 它允许您在控制台中显示一些信息 但我想避免调用外部工具并抓取命令行输出 所有依赖项都记录在类文件的中心位置 即常量池 因此 为了有效地处理所有依赖
  • 格式化 C# 代码片段的文字参数

    有什么方法可以更改代码片段的文字在代码片段生成的代码中使用时的呈现方式吗 具体来说 我想知道是否可以有一个名为 PropertyName 的文字 然后让代码片段引擎渲染 PropertyName 其中第一个字符为小写 我买不起 R 请帮忙
  • 以一种独特且确定性的方式将两个整数映射到一个

    想象两个正整数 A 和 B 我想将这两个组合成一个整数 C 不能有其他整数 D 和 E 组合成 C 因此将它们与加法运算符结合起来是行不通的 例如 30 10 40 40 0 39 1 连接也不起作用 例如 31 2 312 3 12 这种
  • 如何让 localeCompare 的行为与 .sort() 类似,以便所有大写字母排在前面?

    我有一个要排序的字符数组 const arr z a Z A 我希望排序顺序为 按字母顺序排列大写字符 然后按字母顺序排列小写字符 A Z a z 使用以下方法来完成此操作很简单 sort 没有任何参数 const arr z a Z A
  • 如何使用 scipy optimization 找到 3 个参数和数据点列表的最小卡方?

    我有一个排序随机数的直方图和高斯叠加 https i stack imgur com dBqcU png 直方图表示每个箱的观察值 将此基本情况应用于更大的数据集 高斯是拟合数据的尝试 显然 这个高斯并不代表直方图的最佳拟合 下面的代码是高
  • android edittext货币格式不带美元符号

    我尝试在我的编辑文本中创建货币格式 我搜索并缠绕代码 我可以在我的编辑文本中添加货币格式 transfer maney addTextChangedListener new TextWatcher Override public void