Android 更改 EditText 的下划线长度
Android change length of underline for an EditText
我有一个提示 ("Name"),下划线覆盖了提示的长度,但是当我开始输入时,如果下划线短于暗示。我想知道有没有办法改变下划线的长度?
[][]3
此代码应满足您的要求:
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("");
}
}
});
我使用 hack,因此,当我们关注我们的 edittext 或取消关注它但它不是空的时,我们从中清除提示,然后,当我们取消关注它并且它是空的时,我们将提示放回去。
已更新
您还可以将文本观察器添加到 return 提示位置,当您清除了所有文本,但没有从中移开焦点时:
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);
}
}
});
这个对答案的补充将从用户的角度提供更多的默认行为。
请添加此侦听器:
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) {}
});
我有一个提示 ("Name"),下划线覆盖了提示的长度,但是当我开始输入时,如果下划线短于暗示。我想知道有没有办法改变下划线的长度?
此代码应满足您的要求:
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("");
}
}
});
我使用 hack,因此,当我们关注我们的 edittext 或取消关注它但它不是空的时,我们从中清除提示,然后,当我们取消关注它并且它是空的时,我们将提示放回去。
已更新
您还可以将文本观察器添加到 return 提示位置,当您清除了所有文本,但没有从中移开焦点时:
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);
}
}
});
这个对答案的补充将从用户的角度提供更多的默认行为。
请添加此侦听器:
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) {}
});