我想要以两种方式使用EditText
我试图清除它的焦点,但是每次我在长时间点击后松开所有东西都会被选中。可能是因为XML文件中的android:selectAllOnFocus="true"
。但是我确实希望在用户触摸ET时选择所有内容,但不要在长时间按下后选择。
到目前为止我得到的代码是:
main.java
ET = (EditText) findViewById(R.id.someET);
ET.setRawInputType(Configuration.KEYBOARD_12KEY);
ET.setOnEditorActionListener(new DoneOnEditorActionListener());
ET.setOnLongClickListener(new myLongClickListener());
class DoneOnEditorActionListener implements OnEditorActionListener {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
v.clearFocus();
InputMethodManager imm = (InputMethodManager)v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
return true;
}
return false;
}
}
class MyLongClickListener implements OnLongClickListener{
private boolean locked = false;
@Override
public boolean onLongClick(View view) {
if(locked){
((EditText)view).setTextColor(0xFF000000);
} else {
((EditText)view).setTextColor(0xFFFF0000);
}
locked =! locked;
return true;
}
}
DoneOnEditorActionListener在用户按下输入/完成按钮时,ET将失去焦点,键盘将隐藏。
答案 0 :(得分:2)
不是在XML文件中设置android:selectAllOnFocus="true"
,而是根据需要以编程方式控制选择(在任何你想要的听众中):
myEditText.selectAll();
删除选择:
Selection.removeSelection(myEditText.getText());
答案 1 :(得分:1)
是的,可能是由android:selectAllOnFocus="true"
引起的。您可以尝试删除它并实现onClick方法,您应该选择所有文本并显示键盘。否则,您应该尝试从edittext(使用clearFocus()
)清除焦点,并将其提供给另一个视图(使用requestFocus()
)。
答案 2 :(得分:0)
我不知道。但我知道,如何隐藏有空的空间:
ED.setVisibility(8) - 这是'删除'(但您无法将此ED添加到其他视图)
ED.setVisibility(4) - 这是隐藏(你有空的空间)
ED.setVisibility(0) - 默认情况下,显示视图