4

如何使 EditText 具有 onClick 事件,以便单击时完成操作。

private void addListenerOnButton() {

        dateChanger = (EditText) findViewById(R.id.date_iWant);

        dateChanger.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                showDialog(DATE_DIALOG_ID);
            }
        });
    }

这不能正常工作....单击仅提供屏幕键盘,但不提​​供仅在我双击时出现的日期选择器对话框

4

4 回答 4

11

如果我们只是android:focusableInTouchMode="false"在布局页面上添加编辑文本,它应该可以在其 onclicklistener 上单击一次。无需处理 onFocusChangeListener。

于 2013-09-23T13:20:15.123 回答
0

改写

我有一个 EditText,当用户单击它一次或使用轨迹球/方向键导航到它时,它会启动一个对话框。我使用这种方法:

  • 使用 OnFocusChangeListener 获得焦点以打开对话框。
  • 当用户关闭对话框时,覆盖dismissDialog() 以清除EditText 的焦点,防止用户在没有对话框的情况下输入文本(据我所知)。

我也试过这个(但是我现在记得这个方法确实响应了轨迹球的运动):

  • 对触摸事件使用 OnClickListener。
  • 设置setFocusable(false)为防止用户输入。

希望有帮助。

于 2012-05-08T06:25:35.067 回答
0

将您的代码从 onClickListener 更改为 OnFocusChangeListener。

private void addListenerOnButton() {

    dateChanger = (EditText) findViewById(R.id.date_iWant);

    dateChanger.setOnFocusChangeListener(new OnFocusChangeListener() {

        public void onFocusChange(View v, boolean hasFocus) {
            if(hasFocus) {
                showDialog(DATE_DIALOG_ID);
            }
        }
    });
}
于 2012-05-08T06:26:27.937 回答
0

EditText不是为了singleClick.

我的意思是你不应该使用 Click Listener。相反,你可以这样做,

使用onFocusChangeListener也不是 100% 正确的方法。

最好的做法是EditText使用其中的一种方法,如果需要,可以为该 TextView 提供背景图像TextViewonClick


在此处输入图像描述

于 2012-05-08T06:29:12.100 回答