gpt4 book ai didi

android - 格式化编辑文本以获取月份和年份

转载 作者:行者123 更新时间:2023-11-29 00:29:26 24 4
gpt4 key购买 nike

我有一个特定的要求,要在 Android 中制作一个 EditText 来占用月份和年份(所以我给出了 mm/yy 的提示)。当用户强制输入 2 位数的月份时,/ 应该是可见的,比如 (11/) 后跟年份。

以下是我在 editext 上使用的代码。但是,当我按下手机键盘上的十字按钮时,它不会删除 / 但会删除输入的月份。有人可以告诉我为什么会出现这种行为吗?

ed.addTextChangedListener(new TextWatcher(){

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {

}

@Override
public void beforeTextChanged(CharSequence s, int start, int count,int after) {

}

@Override
public void afterTextChanged(Editable s) {
if(ed.getText().toString().matches("[0-9]") && ed.getText().toString().length()==2) {
month=ed.getText().toString();
ed.setText(month+"/");
}
}
});

最佳答案

对于您想实现的目标,请尝试以下我已经测试过的

将这两行添加到您的 xml 中的编辑文本中

android:maxLength="7"
android:inputType="number"

在您的 Activity 中添加以下内容

public int pos=0; //declare this as global variable

ed=(EditText)findViewById(R.id.editText1);
ed.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub

if(ed.getText().length()==2 && pos!=3)
{ ed.setText(ed.getText().toString()+"/");
ed.setSelection(3);
}

}

@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
pos=ed.getText().length();
}

@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub

}
});

这里编辑文本将只接受数字,长度不超过 7,当输入第二个数字/附加到它时

pos 变量当您位于位置 3 时,即在/之后按后退键,位置在 2,因此它再次附加/以避免此 pos 记录文本更改之前的 pos,因此当您按后退键之前的前一个位置为 3 时,它不会附加/导致删除/

关于android - 格式化编辑文本以获取月份和年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16771012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com