`

android中editText保留小数点后两位

 
阅读更多
一个很神奇,方便的保留小数点后两位的案例xml文件中的内容:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    tools:context="com.shzz.ssss.MainActivity"
    tools:ignore="MergeRootFrame" >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="316dp"
        android:layout_height="wrap_content"
        android:digits="1234567890."
        android:inputType="number"
        android:gravity="center_vertical|right"
        android:numeric="integer"
        android:text="0.00"
        android:ems="10" >

        <requestFocus />
    </EditText>
</FrameLayout>
[/color]
activity中的代码:
[size=x-small]package com.shzz.ssss;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.widget.EditText;

public class MainActivity extends Activity {
EditText edit;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

edit = (EditText) findViewById(R.id.editText1); 
        edit.addTextChangedListener(new TextWatcher() { 
            private boolean isChanged = false; 
 
            @Override 
            public void onTextChanged(CharSequence s, int start, int before, 
                    int count) { 
                // TODO Auto-generated method stub 
            } 
 
            @Override 
            public void beforeTextChanged(CharSequence s, int start, int count, 
                    int after) { 
                // TODO Auto-generated method stub 
            } 
 
            @Override 
            public void afterTextChanged(Editable s) { 
                // TODO Auto-generated method stub 
                if (isChanged) {// ----->如果字符未改变则返回 
                    return; 
                } 
                String str = s.toString(); 
 
                isChanged = true; 
                String cuttedStr = str; 
                /* 删除字符串中的dot */ 
                for (int i = str.length() - 1; i >= 0; i--) { 
                    char c = str.charAt(i); 
                    if ('.' == c) { 
                        cuttedStr = str.substring(0, i) + str.substring(i + 1); 
                        break; 
                    } 
                } 
                /* 删除前面多余的0 */ 
                int NUM = cuttedStr.length();
                int zeroIndex = -1;
                for (int i = 0; i < NUM - 2; i++) { 
                char c = cuttedStr.charAt(i); 
                if (c != '0') { 
                zeroIndex = i;
                break;
                }else if(i == NUM - 3){
                zeroIndex = i;
                break;
                }
                } 
                if(zeroIndex != -1){
                cuttedStr = cuttedStr.substring(zeroIndex);
                }
                /* 不足3位补0 */ 
                if (cuttedStr.length() < 3) { 
                    cuttedStr = "0" + cuttedStr; 
                } 
                /* 加上dot,以显示小数点后两位 */ 
                cuttedStr = cuttedStr.substring(0, cuttedStr.length() - 2) 
                        + "." + cuttedStr.substring(cuttedStr.length() - 2); 
             
                edit.setText(cuttedStr); 
 
                edit.setSelection(edit.length()); 
                isChanged = false; 
            }
        }); 
}
}
分享到:
评论

相关推荐

    EditText限制小数点前后位数的实例

    在Android开发中,`EditText` 是一个常用的控件,用于接收用户输入文本。在特定场景下,例如处理货币或百分比等数据时,我们可能需要限制`EditText`中输入的小数点前后位数。本篇将详细介绍如何实现这一功能。 首先...

    Android 限制显示小数点后两位的实现方法

    在Android开发中,有时我们需要对数字进行格式化处理,确保它们只显示小数点后两位。这在显示价格、评分等需要精确到分或者小数点后两位的场景下非常常见。本文将介绍两种实现这一功能的方法。 1. 使用`...

    android_Edittext 两位小数输入,可用于价格/计算器

    这就是如何在Android中创建一个能够接受两位小数输入的`EditText`组件,适用于价格或计算器应用。这个功能通过自定义过滤器和监听器实现了对用户输入的控制,保证了数据的准确性和格式一致性。在实际项目中,可以...

    安卓EditText输入框相关-androidEdittext两位小数输入可用于价格计算器.zip

    这个压缩包“安卓EditText输入框相关-androidEdittext两位小数输入可用于价格计算器.zip”包含了一个示例,展示如何限制`EditText`输入为最多两位小数,这对于构建价格计算器或其他涉及货币输入的应用场景非常有用。...

    Android EditText限制输入整数和小数的位数的方法示例

    在Android开发中,`EditText` 是一个非常常用的控件,用于接收用户输入的文字信息。然而,在某些场景下,我们可能需要对用户输入的数据进行限制,比如限制输入整数和小数的位数。本示例将详细介绍如何实现这样一个...

    安卓输入的为保留两位小数金额Demo

    "安卓输入的为保留两位小数金额Demo"是一个示例项目,它专注于展示如何确保用户在EditText控件中输入的金额值精确到两位小数,并且避免非零数值以零开头的整数部分。下面我们将详细探讨这个Demo所涵盖的关键知识点。...

    Android实现EditText输入金额

    但是最近在项目中要实现EditText输入金额,金额的限制因素很多,比如,只能输入数字和小数点,首位不能输入0和小数点,小数点后面只能保留两位等等,这些仅仅用InputType是无法实现的,今天用InputFilter来实现。...

    超超超简单实现金额输入的EditText

    同时,确保在小数点后始终有两位数字,如果不足则补零。 5. **处理输入限制**: 可以设置最大输入长度,防止用户输入过长的数字。此外,可以禁用非数字字符的输入,避免错误的字符输入。 6. **右对齐显示**: ...

    Android EditText实现输入金额类型详解

    在涉及到金融应用或者需要处理货币数据时,我们通常希望`EditText` 只能接受特定格式的金额输入,例如限定小数点后只有两位数字。下面将详细介绍如何实现这样的功能。 首先,最简单的方法是设置`EditText` 的`Input...

    Android 限制edittext 整数和小数位数 过滤器(详解)

    `ComponentDigitCtrlFilter`有两个构造函数参数,`isJPY`用于判断是否按照日元格式(两位整数,三位小数)进行限制,`digit`则是用户设定的小数位数限制。这两个参数在过滤器的`filter()`方法中起到关键作用。 `...

    InputFilter

    描述中的"根据网上的资料写的可以控制小数点后两位的EditText"表明,这个`InputFilter`实现了一个功能,即当用户在`EditText`中输入数字时,自动限制小数点后最多只能有两位。这在处理金额、百分比等需要精确到...

    android 充值页面效果源码.zip

    1.要求是只能输入数字,最多小数点后两位,下方的充值金额小计一栏始终显示两位小数,除非金额为0,才可以显示为0。 2.GridView 的最后一项是EditText ,点击的时候不能在OnItemClickListener 中监听到,通过...

    EditText正则表达式

    $`,它允许整数部分和最多两位的小数。 4. **邮箱验证**: - 邮箱地址的格式比较复杂,通常使用如`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`这样的正则表达式进行验证。 - 这个表达式涵盖了大部分合法...

    价格限制输入2位小数

    这个场景下,我们需要对`EditText`进行定制,使其能够满足"始终保留两位小数,位数限制为9+2"的需求。 首先,我们需要理解这个需求的具体含义:允许用户输入最多9位整数和2位小数,即总长度不超过11个字符,且小数...

    Android 高仿微信转账金钱输入框规则

    1. **小数点后两位**:金钱输入框通常要求用户输入的金额精确到小数点后两位,例如123.45。这意味着用户最多只能输入两个小数位。 2. **起始输入小数点,显示0**:当用户首次输入小数点时,系统会自动填充一个零,...

    Android简易计算器

    对于无限循环小数精确到小数点后10位,可能需要自定义数据类型或使用BigDecimal类来实现高精度计算。 6. **用户交互**:计算器的界面需要响应用户的输入,如点击数字按钮、运算符按钮,以及显示结果。这涉及到了...

    android 开发指南帮助文档

    格式化结果可以使用`DecimalFormat`类,如保留两位小数。 按钮的点击事件处理是Android交互设计的核心。使用`setOnClickListener`方法为Button设置监听器,可以定义匿名内部类或自定义OnClickListener实现。在`...

    android简单计算器源码

    在计算完成后,结果又需要转换回字符串,以便显示在EditText中。 **格式化输出**也是一个重要的细节。例如,计算器可能需要在结果前面添加符号,或者根据结果的大小决定保留的小数位数。这可以通过DecimalFormat类...

Global site tag (gtag.js) - Google Analytics