Android长按后删除选择EditText

时间:2013-04-29 21:20:26

标签: android focus android-edittext onlongclicklistener

我想要以两种方式使用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将失去焦点,键盘将隐藏。

3 个答案:

答案 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) - 默认情况下,显示视图