一个很神奇,方便的保留小数点后两位的案例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;
}
});
}
}
分享到:
相关推荐
在Android开发中,`EditText` 是一个常用的控件,用于接收用户输入文本。在特定场景下,例如处理货币或百分比等数据时,我们可能需要限制`EditText`中输入的小数点前后位数。本篇将详细介绍如何实现这一功能。 首先...
在Android开发中,有时我们需要对数字进行格式化处理,确保它们只显示小数点后两位。这在显示价格、评分等需要精确到分或者小数点后两位的场景下非常常见。本文将介绍两种实现这一功能的方法。 1. 使用`...
这就是如何在Android中创建一个能够接受两位小数输入的`EditText`组件,适用于价格或计算器应用。这个功能通过自定义过滤器和监听器实现了对用户输入的控制,保证了数据的准确性和格式一致性。在实际项目中,可以...
这个压缩包“安卓EditText输入框相关-androidEdittext两位小数输入可用于价格计算器.zip”包含了一个示例,展示如何限制`EditText`输入为最多两位小数,这对于构建价格计算器或其他涉及货币输入的应用场景非常有用。...
在Android开发中,`EditText` 是一个非常常用的控件,用于接收用户输入的文字信息。然而,在某些场景下,我们可能需要对用户输入的数据进行限制,比如限制输入整数和小数的位数。本示例将详细介绍如何实现这样一个...
"安卓输入的为保留两位小数金额Demo"是一个示例项目,它专注于展示如何确保用户在EditText控件中输入的金额值精确到两位小数,并且避免非零数值以零开头的整数部分。下面我们将详细探讨这个Demo所涵盖的关键知识点。...
但是最近在项目中要实现EditText输入金额,金额的限制因素很多,比如,只能输入数字和小数点,首位不能输入0和小数点,小数点后面只能保留两位等等,这些仅仅用InputType是无法实现的,今天用InputFilter来实现。...
同时,确保在小数点后始终有两位数字,如果不足则补零。 5. **处理输入限制**: 可以设置最大输入长度,防止用户输入过长的数字。此外,可以禁用非数字字符的输入,避免错误的字符输入。 6. **右对齐显示**: ...
在涉及到金融应用或者需要处理货币数据时,我们通常希望`EditText` 只能接受特定格式的金额输入,例如限定小数点后只有两位数字。下面将详细介绍如何实现这样的功能。 首先,最简单的方法是设置`EditText` 的`Input...
`ComponentDigitCtrlFilter`有两个构造函数参数,`isJPY`用于判断是否按照日元格式(两位整数,三位小数)进行限制,`digit`则是用户设定的小数位数限制。这两个参数在过滤器的`filter()`方法中起到关键作用。 `...
描述中的"根据网上的资料写的可以控制小数点后两位的EditText"表明,这个`InputFilter`实现了一个功能,即当用户在`EditText`中输入数字时,自动限制小数点后最多只能有两位。这在处理金额、百分比等需要精确到...
1.要求是只能输入数字,最多小数点后两位,下方的充值金额小计一栏始终显示两位小数,除非金额为0,才可以显示为0。 2.GridView 的最后一项是EditText ,点击的时候不能在OnItemClickListener 中监听到,通过...
$`,它允许整数部分和最多两位的小数。 4. **邮箱验证**: - 邮箱地址的格式比较复杂,通常使用如`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`这样的正则表达式进行验证。 - 这个表达式涵盖了大部分合法...
这个场景下,我们需要对`EditText`进行定制,使其能够满足"始终保留两位小数,位数限制为9+2"的需求。 首先,我们需要理解这个需求的具体含义:允许用户输入最多9位整数和2位小数,即总长度不超过11个字符,且小数...
1. **小数点后两位**:金钱输入框通常要求用户输入的金额精确到小数点后两位,例如123.45。这意味着用户最多只能输入两个小数位。 2. **起始输入小数点,显示0**:当用户首次输入小数点时,系统会自动填充一个零,...
对于无限循环小数精确到小数点后10位,可能需要自定义数据类型或使用BigDecimal类来实现高精度计算。 6. **用户交互**:计算器的界面需要响应用户的输入,如点击数字按钮、运算符按钮,以及显示结果。这涉及到了...
格式化结果可以使用`DecimalFormat`类,如保留两位小数。 按钮的点击事件处理是Android交互设计的核心。使用`setOnClickListener`方法为Button设置监听器,可以定义匿名内部类或自定义OnClickListener实现。在`...
在计算完成后,结果又需要转换回字符串,以便显示在EditText中。 **格式化输出**也是一个重要的细节。例如,计算器可能需要在结果前面添加符号,或者根据结果的大小决定保留的小数位数。这可以通过DecimalFormat类...