package com.wuxiaolong.androidsamples;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.widget.EditText;
public class CustomInputActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_input);
final EditText phoneFormat = (EditText) findViewById(R.id.phoneFormat);
final EditText timeFormat = (EditText) findViewById(R.id.timeFormat);
phoneFormat(phoneFormat);
timeFormat(timeFormat);
}
void phoneFormat(EditText editText) {
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
if (charSequence == null || charSequence.length() == 0)
return;
StringBuilder stringBuilder = new StringBuilder();
// for (int i = 0; i < charSequence.length(); i++) {
// if (i != 3 && i != 8 && charSequence.charAt(i) == ' ') {
// continue;
// } else {
// stringBuilder.append(charSequence.charAt(i));
// if ((stringBuilder.length() == 4 || stringBuilder.length() == 9)
// && stringBuilder.charAt(stringBuilder.length() - 1) != ' ') {
// stringBuilder.insert(stringBuilder.length() - 1, ' ');
// }
// }
// }
for (int i = 0; i < charSequence.length(); i++) {
// if (i == 3 && i == 8 && charSequence.charAt(i) != ' ') {
// continue;
// } else {
stringBuilder.append(charSequence.charAt(i));
if ((stringBuilder.length() == 4 || stringBuilder.length() == 9)
&& stringBuilder.charAt(stringBuilder.length() - 1) != ' ') {
stringBuilder.insert(stringBuilder.length() - 1, ' ');
}
// }
}
Log.d("wxl", "start=" + start + ",before=" + before + "---stringBuilder.toString()=" + stringBuilder.toString() + ",charSequence.toString()=" + charSequence.toString());
if (!stringBuilder.toString().equals(charSequence.toString())) {
int index = start + 1;//start 为开始变化位置的索引,从0开始计数;
if (stringBuilder.charAt(start) == ' ') {
if (before == 0) {//charSequence由1变为12,before为0
index++;
} else {
index--;
}
} else {
if (before == 1) {//charSequence由12变为1,before为0
index--;
}
}
Log.d("wxl", "index=" + index);
editText.setText(stringBuilder.toString());
editText.setSelection(index);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
void timeFormat(EditText editText) {
// List<String> charSequenceList = new ArrayList<>();
// editText.addTextChangedListener(
// new TextWatcher() {
// @Override
// public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//
// }
//
// @Override
// public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
// if (charSequence == null || charSequence.length() == 0)
// return;
// charSequenceList.removeAll(charSequenceList);
// StringBuilder stringBuilder = new StringBuilder();
// for (int i = 0; i < charSequence.length(); i++) {
//// stringBuilder.append(charSequence.charAt(i));
//// if ((stringBuilder.length() == 3)) {
//// stringBuilder.append(" ");
//// }
// if (i == 2) {
// charSequenceList.add(":");
// } else {
// charSequenceList.add(charSequence.charAt(i) + "");
// }
// }
// for (int i = 0; i < charSequenceList.size(); i++) {
// stringBuilder.append(charSequenceList.get(i));
// }
//
// Log.d("wxl", "start=" + start + ",before=" + before + "---stringBuilder.toString()=" + stringBuilder.toString() + ",charSequence.toString()=" + charSequence.toString());
// if (!stringBuilder.toString().equals(charSequence.toString())) {
// int index = before;//start 为开始变化位置的索引,从0开始计数;
// if (before == 0) {//charSequence由1变为12,before为0
// editText.setSelection(3);
// } else if (before == 1) {
// editText.setSelection(2);
// }
//
//// Log.d("wxl", "index=" + index);
// editText.setText(stringBuilder.toString());
//
// }
// }
//
// @Override
// public void afterTextChanged(Editable s) {
//
// }
// }
//
// );
}
}