I am new on android and want to when i am entering cnic in edittext then after some digit i can put dash on it like:
12221-1338888-3
et_cnic = (EditText) findViewById(R.id.et_cnic);
How i can achieve this?please help.
Try this
edt.addTextChangedListener(new TextWatcher() {
#Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
#Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String str = s.toString();
if(s.length() == 5 || s.length() == 13){
str += "-";
edt.setText(str);
edt.setSelection(str.length());
}
}
#Override
public void afterTextChanged(Editable s) {
}
});
et_cnic .addTextChangedListener(new TextWatcher() {
#Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(String.valueOf(et_cnic.getText()).length>X)//here x is the number of character after which "." will display on edit text
{
et_cnic.setText(String.valueOf(et_cnic.getText).substring(0,X)+"*")//x here same the number of charcter which you do not want to replace with"."
}
// TODO Auto-generated method stub
// Here you have to write your code for adding dashes.
}
#Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
#Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
String content="";
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText edText = (EditText)findViewById(R.id.edText);
edText.addTextChangedListener(new TextWatcher() {
#Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
if(s.length()%4 == 0){
int starting = content.length()==0?0:content.length();
content = content+s.subSequence(starting, start)+"-";
}
}
#Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
#Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
}
Try this:
int x = 2;
edt = (EditText) findViewById(R.id.edt_test);
edt.addTextChangedListener(new TextWatcher() {
#Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
#Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.toString().length() == x) {
edt.setText(s + "-");
edt.setSelection(s.toString().length() + 1);
}
}
#Override
public void afterTextChanged(Editable s) {
}
});
int a = 0; // write this before on create
#Override
public void afterTextChanged(Editable s) {
if(s.length()==4 && a == 0){ // this logic will allow you to delete the "-" as well
number.setText(s+"-");
number.setSelection(s.length()+1);
a=1;
}
else if(s.length()<4 && a==1){
a=0;
}
}
Related
Is it possible to insert auto characters into an EditText? I have addTextChangedListener method. Input type is numberDecimal. I try to add 0 if input starting .(dot) I want to get like this result (0.4,0.3 etc). I wrote this code but it's not working.
countunicoinsSell.addTextChangedListener(new TextWatcher() {
#Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
#Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
#Override
public void afterTextChanged(Editable s) {
countCourse(s.toString());
}
});
private void countCourse(String value) {
if (value == null)
return;
if (value.startsWith(".")) {
countunicoinsSell.append("0");
}
}
How can I solve this problem?
This may work for your try it out!
etMobileNumber.addTextChangedListener(new TextWatcher() {
#Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
#Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
#Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
if(!s.toString().contains("0.")){
etMobileNumber.setText("0.");
Selection.setSelection(etMobileNumber.getText(), etMobileNumber.getText().length());
}
}
});
if (value.startsWith(".")) {
countunicoinsSell.setText("0"+value);
}
Hope it help
private TextWatcher textWatcher = new TextWatcher() {
#Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
#Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
#Override
public void afterTextChanged(Editable s) {
if(s.toString().startsWith(".")){
// append with 0
mEditText.setText("0" + mEditText.getText().toString());
// move the cursor to the end of the string
mEditText.setSelection(mETEmail.length());
}
}
};
I have an edittext. I want when the use type a sentence. After a space some words will be changed into another. I want to perform this using addTextChangedListener only.
I'm using the following code:
editText.addTextChangedListener(new TextWatcher() {
#Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
#Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
#Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
editText.addTextChangedListener(new TextWatcher() {
#Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
#Override
public void afterTextChanged(Editable str) {
Editable ab = new SpannableStringBuilder(str.toString().replace("A", "a"));
editText.setText(ab);
}
#Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
});
You can write a method like this. first check if user entered space. then split the word from spaces and replace your words.
editText.addTextChangedListener(new TextWatcher() {
#Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if(s.subSequence(s.length()-1, s.length()).length()==0)
{
replaceWord(s.toString());
}
}
#Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
#Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
private void replaceWord(String word)
{
String wordsList[] = word.split(" ");
//Replace words here
}
I tried with Using TextChangedListener, beforeTextChanged and afterTextChanged! but I had no result
TextWatcher class can help you:
#Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
#Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
#Override
public void onTextChanged(CharSequence s, int a, int b, int c) {
// TODO Auto-generated method stub
output.setText(s);
if(a == 9){
Toast.makeText(getApplicationContext(), "Maximum Limit Reached", Toast.LENGTH_SHORT).show();
}
}};
Complete reference could be found here.
this work for me :)
txtwt = new TextWatcher()
{
char last ;
#Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
if (s.toString().length() >= 1)
EntredNumber = s.toString();
}
#Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
if (s.toString().length() >= 2)
{
last = (s.toString().charAt(s.toString().length() - 1));
// Toast.makeText(getApplicationContext(), last +"", Toast.LENGTH_SHORT).show();
if (EntredNumber.contains((last + "")))
{
txtImputNumber.removeTextChangedListener(txtwt);
txtImputNumber.setText(EntredNumber);
txtImputNumber.setSelection(EntredNumber.length());
txtImputNumber.addTextChangedListener(txtwt);
}
}
}
#Override
public void afterTextChanged(Editable s)
{
}
};
txtImputNumber.addTextChangedListener(txtwt);
I'm quite new in android and I don't know if it's possible that when user enters sth in edittext it trigers another method.
like
EDİT When I run this in onCrate it crashes
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
anyStringEntered();
}
my methods that checks if there is any change on Edittext
public void anyStringEntered(){
userName = (EditText) findViewById(R.id.userNameTextBox);
userPassword = (EditText) findViewById(R.id.userPasswordTextBox);
rememberMe= (CheckBox) findViewById(R.id.checkBox1);
userName.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) {
// TODO Auto-generated method stub
}
#Override
public void afterTextChanged(Editable s) {
if(!userPassword.getText().toString().equals("") && !userName.getText().toString().equals("")){
rememberMe.setEnabled(true);
}else{
rememberMe.setEnabled(false);
}
}
});
userPassword.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) {
// TODO Auto-generated method stub
}
#Override
public void afterTextChanged(Editable s) {
if(!userPassword.getText().toString().equals("") && !userName.getText().toString().equals("")){
rememberMe.setEnabled(true);
}else{
rememberMe.setEnabled(false);
}
}
});
}
Use the TextWatcher:
edittext.addTextChangedListener(new TextWatcher(){
public void afterTextChanged(Editable s) {
//method1()
}
public void beforeTextChanged(CharSequence s, int start, int count, int after){
//method2()
}
public void onTextChanged(CharSequence s, int start, int before, int count){
//method3()
}
});
It is what you are looking for ?
editTextLogin.addTextChangedListener(new TextWatcher() {
#Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
#Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
// TODO Auto-generated method stub
}
#Override
public void afterTextChanged(Editable s) {
if(edittext.gettext()!="")
{ myMethod(); }
else {
myMethod2();
}
}
};
I am trying to make edittext_2 not editable if edittext_1 is empty, but if edittext_1 is not empty I want edittext_2 to be editable.
I tried this code:
if (edittext_1.getText().toString().equals(""))
{
edittext_2.setEnabled(false);
}
else
{
edittext_2.setEnabled(true);
}
In the beginning the code works fine it makes edittext_2 not editable, but when I enter a value in edittext_1, edittext_2 still not editable.
You need to add edittext_1 on TextWatcher().
Try this
edittext_1.addTextChangedListener(new TextWatcher() {
#Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
if (s.toString().equals("")) {
edittext_2.setEnabled(false);
} else {
edittext_2.setEnabled(true);
}
}
#Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
#Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
Use this.
if (edittext_1.getText().equalsIgnoreCase(""))
{
edittext_2.setEnabled(false);
edittext_2.setFocusable(false);
}
else
{
edittext_2.setEnabled(true);
edittext_2.setFocusable(true);
}
Try this
editText2.setEnabled(false);
editText1.addTextChangedListener(new TextWatcher() {
#Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if (!editText1.getText().toString().equals("")) {
editText2.setEnabled(true);
} else {
editText2.setEnabled(false);
}
}
#Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
#Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
What you have initialized will work for first time but when you make some changes in the edittext_1, you should again enable the edittext_2.Add the following code also,
edittext_1.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
if (edittext_1.getText().toString().equals(""))
{
edittext_2.setEnabled(false);
}
else
{
edittext_2.setEnabled(true);
}
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
});