不启用的EditText的onClickListener未被调用

5

我想在一个不可编辑的EditText字段被按下时进行捕获。(我只想改变它, 我不想插入文本)。 我为其分配了一个onClick监听器,但它没有被调用.. 有什么建议吗? 还有其他事件可以监听吗?

final EditText field = column.get(i);
field.setEnabled(false);
field.setClickable(true);
field.setFocusable(false);
field.setFocusableInTouchMode(false);

field.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                ((EditText)v).setText("a");

            }
        });

感谢!

1
setClickable(true)setOnClickListener 中被调用,而 setFocusableInTouchMode 的处理则在 setFocusable 中完成。因此这两行代码并不是必需的。 - Xavier
2个回答

5

当一个 View 被禁用时,您无法传递点击事件。

因此,请尝试更改以下内容:

field.setEnabled(false);

致:

field.setEnabled(true);

现在尝试使用我的更新答案。确保你已经设置了 field.setFocusableInTouchMode(false); 这将不允许你的 EditText 弹出软键盘。 - waqaslam

1
final EditText field = column.get(i);
field.setCursorVisible(false);

field.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                field.setText("something");
                field.clearFocus();
            }
        }
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接