Ale*_*tin 10 android android-edittext
我有EditText,显示类似### - ###的内容.我希望用户只能从第1个位置开始更改此文本.那就是用户不应该在中间触摸#并进行更改.我怎样才能做到这一点?非常感谢.
对不起,我的问题不准确.我想在文本中间禁用甚至点击.
Ter*_*rel 17
如果用户试图通过点击edittext来移动它,则以下代码将强制光标停留在最后位置:
edittext.setCursorVisible(false);
edittext.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
edittext.setSelection(edittext.getText().length());
}
});
Run Code Online (Sandbox Code Playgroud)
请注意,用户仍然可以通过箭头键和/或轨迹球来更改光标的位置.据我所知,目前还没有针对此问题的解决方法.
尝试创建一个派生自edittext的类,并覆盖onSelectionChanged
public class BlockedSelectionEditText extends
EditText{
/** Standard Constructors */
public BlockedSelectionEditText (Context context) {
super(context);
}
public BlockedSelectionEditText (Context context,
AttributeSet attrs) {
super(context, attrs);
}
public BlockedSelectionEditText (Context context,
AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onSelectionChanged(int selStart, int selEnd) {
//on selection move cursor to end of text
setSelection(this.length());
}
}
Run Code Online (Sandbox Code Playgroud)
Cas*_*mer -2
您需要实现 TextWatcher 接口并重写三个方法,afterTextChanged、beforeTextChanged、onTextChanged(您可能只需要实际使用其中之一)例如:
public class MyTextWatcher implements TextWatcher {
@Override
public void afterTextChanged(Editable arg0) {
changeItBack();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
}
Run Code Online (Sandbox Code Playgroud)
然后将此 Watcher 添加到您的 EditText 中,如下所示:
myEditText.addTextChangedListener(new MyTextWatcher());
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
8942 次 |
| 最近记录: |