版权声明:本文为博主原创文章,未经博主允许不得转载。
在自己开发过程中,由于需求,需要手动的修改手机号码,解决体验,所以遇到了此问题,不算大问题,为了以后方便查找,为他人提供帮助,我决定记录下来,也方便自己,更方便别人。
以下是我尝试了好多解决方案,最终完美的解决的办法,希望网上的各种答案,能够得到此篇文章的综合,减少初学者学习困惑。
我的布局文件
<EditText
android:id="@+id/maintain_order_pay_phone_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="8dp"
android:layout_weight="1"
android:background="@drawable/gray_bg_shape"
android:editable="false"
android:focusableInTouchMode="false"
android:focusable="false"
android:padding="3dp"
android:text="13452349021"
android:textColor="@color/text_color"
android:textSize="@dimen/text_size_14" />
最重要的是 在布局文件中,设置
android:editable=”false” android:focusableInTouchMode=”false” android:focusable=”false”
至于它们的作用,
editable是设置是否编辑,而focusableInTouchMode,则是在Touch Mode模式下,获得焦点,focusable是设置控件是否获取的焦点状态
在代码中,通过他们来获得焦点,解决无法编辑:
maintain_order_pay_phone_number.setFocusable(true); maintain_order_pay_phone_number.setEnabled(true); maintain_order_pay_phone_number.requestFocus(); maintain_order_pay_phone_number.setFocusableInTouchMode(true); maintain_order_pay_phone_number.requestFocusFromTouch();
以下是我的代码:
maintain_order_pay_phone_number.setFocusable(true);
maintain_order_pay_phone_number.setEnabled(true);
maintain_order_pay_phone_number.requestFocus();
maintain_order_pay_phone_number.setFocusableInTouchMode(true);
maintain_order_pay_phone_number.requestFocusFromTouch();
maintain_order_pay_phone_number.setInputType(InputType.TYPE_CLASS_PHONE);
maintain_order_pay_phone_number.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
Pattern pattern = Pattern.compile("1[0-9]{10}");
Matcher matcher = pattern.matcher(maintain_order_pay_phone_number.getText());
if (matcher.matches()) {
return false;
} else {
ToastUtil.showGenericToast(me,"手机号码有误,请重新输入");
return false;
}
}
});
break;
我的效果图: