如何在用户点击我的EditText后执行某些操作
我有一个显示时间的EditText
。用户点击EditText
后,我想显示TimePickerDialog
,因此我将View.OnClickListener
设置为我的EditText
。如何在用户点击我的EditText后执行某些操作
但OnClickListener
行为怪异 - 我触摸EditText
,然后出现软件键盘(我不想)。当我再次触摸时,OnClickListener.onClick()
终于被调用并出现对话框。
如果我希望对话框立即出现,我应该怎么做?
不同于大多数其他控件,EditText
s为可聚焦在系统处于“触摸模式”。第一次点击事件关注控件,而第二次点击事件实际上触发了OnClickListener
。如果您通过android:focusableInTouchMode
视图属性禁用触摸模式焦点,则应按预期触发OnClickListener
。
<EditText
android:text="@+id/EditText01"
android:id="@+id/EditText01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusableInTouchMode="false" />
这听起来像你不希望用户真的能够输入EditText。你只是希望他们能够通过时间选择器来选择时间。那么为什么不只是一个弹出TimePickerDialog的按钮呢?您可以显示在TextView中选取的时间。
或者您可以用TimePicker视图(不是对话框,只是常规视图)替换EditText视图。
我只想使用EditText,因为它在我的应用程序中看起来比按钮更好。我知道我可以通过使用带有适当可绘制按钮的按钮来获得相同的效果,但只是使用edittext更简单(我不必创建绘图等)。 – fhucho 2010-01-22 17:54:42
只是一个笔记...你不必真的创建任何只要告诉按钮使用EditText的drawable即可。 – 2010-01-22 18:13:28
在这种情况下,请在您的EditText视图上尝试android:editable =“false”。您仍然应该能够捕获onClick事件,但由于它不可编辑,软键盘不应弹出。 – 2010-01-22 18:38:34
如果我理解正确,你只需要像
<EditText android:text="@+id/EditText01" android:id="@+id/EditText01"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:clickable="true" android:inputType="none" />
不可编辑和点击。设置OnClickListener
,你就完成了。 在理论上,实践中应添加过
android:editable="false"
它被废弃了,但做的伎俩。
我解决了这个通过使用定制的按钮这样的:
<Button
android:id="@+id/btTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="test"
android:textSize="20dp"
android:background="@android:drawable/edit_text" />
另一种解决方案是使用ontouchlistener
:
edittext.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(MotionEvent.ACTION_UP == event.getAction()) {
mQuaternion_1.setText("" + mQ1);
}
return true; // return is important...
}
});
如果返回true
事件的处理和键盘不会弹出。如果你想让键盘仍然弹出并注册点击,你会让它返回false
。
还有android:focusable,它可以在触摸和非触摸模式下工作 – Keith 2012-05-22 00:46:13
有用的答案..感谢很多 – Ranjit 2013-09-23 13:13:39
重要的是,如果你想做一些额外的动作,如显示键盘,如果你添加这个,键盘不是能够输入onymore :( – cV2 2015-01-15 17:02:19