0

我有一个EditText我想以两种方式使用的

  • 单击时,所有内容都被选中,用户可以更改输入。
  • 长按时,文本颜色会发生变化,其余时间不会对用户产生任何影响。

我试图清除它的焦点,但每次我在长按后放手时都会选择所有内容。可能是因为android:selectAllOnFocus="true"在 XML 文件中。但我确实希望在用户刚刚触摸 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 将失去焦点并且键盘将隐藏。

4

3 回答 3

2

除了android:selectAllOnFocus="true"在 XML 文件中设置,您最好根据需要以编程方式控制选择(在您想要的任何侦听器中):

myEditText.selectAll(); 

要删除选择:

Selection.removeSelection(myEditText.getText()); 
于 2015-03-07T23:51:24.703 回答
1

是的,可能是由android:selectAllOnFocus="true". 您可以尝试删除它并实现 onClick 方法,您应该选择所有文本并显示键盘。否则,您应该尝试从编辑文本中清除焦点(使用clearFocus()),并将其交给另一个视图(使用requestFocus())。

于 2013-04-29T21:48:38.987 回答
0

我不知道。但我知道,如何在有和没有空格的情况下隐藏:

ED.setVisibility(8) - 这是“删除”(但你不能将此 ED 添加到其他视图)
ED.setVisibility(4) - 这是隐藏(你有空白空间)
ED.setVisibility(0) - 默认,这个正在显示视图

于 2013-04-29T21:39:41.907 回答