概述
-
EditText
EditeText设置它被选中可输入 跟不被选中不可输入的时候。
有三个属性处理
//设置是否能被点击
//这是最重要的,设置不可输入不可点击直接设置这个属性就可以
//大坑 只设置enable就可以了 千万别设置其它的属性类似focusable
//会导致再按一次没反应的
editText.setEnabled(false);
editText.setFocusable(true);//能否被聚焦
editText.requestFocus();//请求聚焦
在布局中直接新建EditText参考下面的属性
//这个是准备设置它在父布局的位置跟空间的
LinearLayout.LayoutParams layoutParams =
new LinearLayout.LayoutParams
(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(6, 6, 6, 0);
editText.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
//这个是设置它在父布局的属性的
editText.setLayoutParams(layoutParams);
editText.setId(i);
editText.setSingleLine(false);
editText.setBackground(getActivity().getDrawable(R.drawable.bg_edit_question));
editText.setTextColor(getActivity().getColor(R.color.white));
editText.setEnabled(false);
//竖直方向可以滑动
editText.setVerticalScrollBarEnabled(true);
editText.setPadding(10, 4, 4, 4);
editText.setGravity(Gravity.TOP);
editText.setTextSize(16);
//这个要注意一下:设置最大的字数,因为没有setLength这个属性 里面只有这个设置属性
editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(500)});
设置只能输入金额
//在xml中要设置一下属性
android:inputType="numberDecimal"
//在代码中就直接用
InputFilter[] filters={new CashierInputFilter()};
mTextViewSingleGoodsMoney.setFilters(filters); //设置金额输入的过滤器,保证只能输入金额类型
/**
* Create by ldr
* on 2018/8/28 11:31.
* 用于在EditeText中增加过滤器 用于控制只能输入金额
*/
public class CashierInputFilter implements InputFilter {
Pattern mPattern;
//输入的最大金额
private static final int MAX_VALUE = Integer.MAX_VALUE;
//小数点后的位数
private static final int POINTER_LENGTH = 2;
private static final String POINTER = ".";
private static final String ZERO = "0";
public CashierInputFilter() {
mPattern = Pattern.compile("([0-9]|\.)*");
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
String sourceText = source.toString();
String destText = dest.toString();
//验证删除等按键
if (TextUtils.isEmpty(sourceText)) {
return "";
}
Matcher matcher = mPattern.matcher(source);
//已经输入小数点的情况下,只能输入数字
if(destText.contains(POINTER)) {
if (!matcher.matches()) {
return "";
} else {
if (POINTER.equals(source.toString())) { //只能输入一个小数点
return "";
}
}
//验证小数点精度,保证小数点后只能输入两位
int index = destText.indexOf(POINTER);
int length = dend - index;
if (length > POINTER_LENGTH) {
return dest.subSequence(dstart, dend);
}
} else {
/**
* 没有输入小数点的情况下,只能输入小数点和数字
* 1. 首位不能输入小数点
* 2. 如果首位输入0,则接下来只能输入小数点了
*/
if (!matcher.matches()) {
return "";
} else {
if ((POINTER.equals(source.toString())) && TextUtils.isEmpty(destText)) { //首位不能输入小数点
return "";
} else if (!POINTER.equals(source.toString()) && ZERO.equals(destText)) { //如果首位输入0,接下来只能输入小数点
return "";
}
}
}
//验证输入金额的大小
double sumText = Double.parseDouble(destText + sourceText);
if (sumText > MAX_VALUE) {
return dest.subSequence(dstart, dend);
}
return dest.subSequence(dstart, dend) + sourceText;
}
}
最后
以上就是悲凉朋友为你收集整理的Android EditText的全部内容,希望文章能够帮你解决Android EditText所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复