是否可以以某种方式将光标放在提示的末尾(不是文本的结尾)?
方法setSelection()
无效(抛出IndexOutOfBounds
异常,因为文本长度为0)。
答案 0 :(得分:1)
您无法根据提示放置光标。但是,您可以执行的操作是将所需的文本附加到EditText,然后光标将在此之后。然后,您可以添加TextWatcher以防止用户删除附加(提示)文本。这是一些代码:
public class MainActivity extends AppCompatActivity {
private String HINT = "Name: ";
private EditText editText;
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)
{
if (!s.toString().startsWith(HINT))
{
editText.removeTextChangedListener(this);
editText.setText("");
editText.append(HINT);
editText.addTextChangedListener(this);
}
}
@Override
public void afterTextChanged(Editable s)
{
}
};
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
editText = findViewById(R.id.edit_text);
editText.append(HINT);
editText.addTextChangedListener(textWatcher);
}
}
答案 1 :(得分:1)
有一个技巧。首先你得到提示字符串和提示颜色然后你设置EditText的文本(值等于提示字符串)并且不要忘记设置textcolor(值提示颜色)。当用户点击EditText时,你可以在重置空文本时更改颜色。
final EditText editText = (EditText) findViewById(R.id.your_id);
String hint = editText.getHint().toString();
ColorStateList hintTextColor = editText.getHintTextColors();
final ColorStateList textColor = editText.getTextColors();
editText.setTextColor(hintTextColor);
editText.setText(hint);
editText.setSelection(hint.length());
editText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText.setTextColor(textColor);
editText.setText("");
}
});
答案 2 :(得分:0)
不,除非您将提示作为常规EditText内容,因为提示不是一个。但这违背了提示功能的目的......