Android 编辑文本单击事件焦点

Android 编辑文本单击事件焦点,android,Android,我有三个Edittext字段ed1、ed2、ed3。当用户单击ed2/ed3时,我已打开对话框并从该对话框中获取输入。对于第一次单击,光标将显示在编辑文本框中,对于下一次单击,我只能打开对话框以获取输入。我需要在第一次单击时显示对话框。这是EditText的行为方式。必须首先对其进行聚焦,以触发onClick事件 编辑: 就像巴拉克指出的那样,你可以禁用“聚焦”,只需点击一下就可以打开它。缺点是您将无法在EditText上键入内容(这对于您的用例来说可能很好)。为什么不使用按钮来代替。。但将其背

我有三个Edittext字段ed1、ed2、ed3。当用户单击ed2/ed3时,我已打开对话框并从该对话框中获取输入。对于第一次单击,光标将显示在编辑文本框中,对于下一次单击,我只能打开对话框以获取输入。我需要在第一次单击时显示对话框。

这是EditText的行为方式。必须首先对其进行聚焦,以触发
onClick
事件

编辑:
就像巴拉克指出的那样,你可以禁用“聚焦”,只需点击一下就可以打开它。缺点是您将无法在EditText上键入内容(这对于您的用例来说可能很好)。

为什么不使用按钮来代替。。但将其背景设置为默认的EditText..

将EditText设置为不可聚焦。这样一来,第一次触摸即注册为点击

在有关EditText的XML中添加:

 android:focusableInTouchMode="false"

要使
EditText
类型化,您可以做一些小技巧

如果只需要在第一次打开
对话框
,然后使用
编辑文本
,通常可以执行以下操作:

public class EditTextActivity extends Activity {
    EditText et1;
    int clickCount = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);

         et1 = (EditText) findViewById(R.id.main_et1);
         et1.setFocusableInTouchMode(false);
         setOnClickListeners();


    private void setOnClickListeners(){
         location.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            if (clickCount == 0){
                OpenDialog(); //Call the function to open the dialog created by you
                et1.setFocusableInTouchMode(true);
            }
            clickCount = 1;
        }
    });

}

不是真的。。。在XML中使用android:focusableInTouchMode=“false”,在编辑文本上的第一次触摸将注册为单击。对,但这不会使它无法键入吗?是的,但如果你像按钮一样单击它,我想你无论如何都不希望它可以键入。:)当我希望用户单击EditText并弹出一个选取器对话框,并将选取器的结果放入EditText时,我将其用于表单中的日期和时间输入。基本上,我这样做是为了保持其余输入的“外观”,但强制输入正确的形式/格式(这听起来像OP正在尝试做的)。是的,如果他确实不希望它聚焦,这是一个好的选择:我根据这个问题的发展提出这个答案@巴拉克说要定义android:focusableInTouchMode=“false”,这是正确的,但正如@dmon所说:“缺点是您无法在编辑文本上键入内容”。我用这个来解决问题。