通常情况下,你希望最大与EditText
的正常行为兼容。
所以你应该不是使用android:focusable="false"
因为,是的,该视图将不再是可以聚焦的,这看起来不好。例如,背景可绘制将不再显示其“已按下”状态。
你应该做的,而不是为以下:
myEditText.setInputType(InputType.TYPE_NULL);
myEditText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// showMyDialog();
}
});
myEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
// showMyDialog();
}
}
});
通过将输入类型设置为TYPE_NULL
,可以防止软键盘的弹出。
通过设置OnClickListener
和OnFocusChangeListener
,您确保当用户点击进入EditText
领域的对话总是会打开,无论是在它获得焦点(第一次单击),并在随后的点击。
只是设置android:inputType="none"
或setInputType(InputType.TYPE_NULL)
并不总是足够的。对于某些设备,您也应该在XML中设置android:editable="false"
,尽管它已被弃用。如果它不再工作,它将被忽略(因为所有不支持的XML属性)。
来源
2013-09-08 06:09:21
caw
您应该使用一个微调,而不是一个EditText对话框。 – 2012-09-30 03:34:13