1

Ich habe einen Hinweis ("Name") und die Unterstreichung erstreckt sich über die Länge des Hinweises, aber wenn ich zu tippen beginnt die Unterstreichung nicht die Länge von was ich tippe wenn es ist kürzer als der Hinweis. Ich habe mich gefragt, ob es eine Möglichkeit gibt, die Länge der Unterstreichung zu ändern?Android ändern Länge der Unterstreichung für einen EditText

enter image description here [enter image description here] [enter image description here] 3

Antwort

1

sollten Dieser Code machen, was Sie wollen:

final EditText editText = (EditText) findViewById(R.id.edit_query); 
final CharSequence rememberHint = editText.getHint(); 
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
    @Override 
    public void onFocusChange(View view, boolean b) { 
     if (!b && TextUtils.isEmpty(editText.getText())) { 
      editText.setHint(rememberHint); 
     } else { 
      editText.setHint(""); 
     } 
    } 
}); 

Ich benutze einen Hack, so, wenn wir auf unsere EditText konzentrieren, oder unfocus, aber es ist nicht leer, wir machen einen Hinweis darauf, und dann, wenn wir es nicht fokussieren und es leer ist, legen wir einen Hinweis zurück.

AKTUALISIERT

Sie können auch Text-Beobachter hinzufügen Hinweis auf seinen Platz zurück, wenn Sie den gesamten Text gelöscht, aber keine unfocus davon:

editText.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {} 

    @Override 
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {} 

    @Override 
    public void afterTextChanged(Editable editable) { 
     if (editable.length() != 0) { 
      editText.setHint(""); 
     } else { 
      editText.setHint(rememberHint); 
     } 
    } 
}); 

Dieser Zusatz liefert zu beantworten mehr Standardverhalten aus Benutzerperspektive.

0

PLease diesen Listener hinzu:

yourEditText.addTextChangedListener(new TextWatcher() { 

      public void afterTextChanged(Editable s) { 

       // you can call or do what you want with your EditText here 
       youEditText.setHint(""); 
      } 

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

      public void onTextChanged(CharSequence s, int start, int before, int count) {} 
     }); 
Verwandte Themen