Android开发 EditView在用户输入数据后自动添加默认数据

有时候在开发EditView中需要添加一些特效,如要用户数据体重数据的时候,只需要用户填写数字,EditVeiw会自动添加后缀(如:“kg")

用户输入数据之前,如图(一):

Android开发 EditView在用户输入数据后自动添加默认数据_第1张图片

当获取用户输入数据后,则会自动添加文字“kg”,如图(二):

Android开发 EditView在用户输入数据后自动添加默认数据_第2张图片

想要实现此功能,需要在EditView上,设置addTextChangedListener方法,如:

weightInput.addTextChangedListener(new WeightWatcher());

然后:

/*设置记录体重的EditView的样式,自动在用户输入的数值后面加上字符"g"或者"kg"
	 * 这个方法的难点是,一定要设定好边界条件,否则会出现死循环,并导致程序崩溃
	 * 当方法执行后,EditText会刷新一次,此时的光标会跑到文字的最前面
	 * 所以要通过Selection.setSelection(View,length),来从新设置光标的位置,同样要注意的是:
	 * length必须要大于1,否则会有异常产生。
	 */
	public class WeightWatcher implements TextWatcher{
		int i = 0;          //记录字符串被删除之前,字符串的长度
		@Override
		public void onTextChanged(CharSequence s, int start, int before, int count) {
		}
		@Override
		public void beforeTextChanged(CharSequence s, int start, int count,
				int after) {
		    i=s.length();
		}
		
		@Override
		public void afterTextChanged(Editable s) {
			if (i == 0){
				String value = weightInput.getText()+"kg";
				weightInput.setText(value);
				Selection.setSelection(weightInput.getText(), weightInput.length()-2);
			}
		}
	}
最后一句代码的作用设置光标的位置,因为刷新后光标就移到了最前端。需要注意的是,是第二个参数:offset要大于1,否则会有异常

你可能感兴趣的:(Android,EditView)